1#!/bin/sh 2# 3# This file is part of the LibreOffice project. 4# 5# This Source Code Form is subject to the terms of the Mozilla Public 6# License, v. 2.0. If a copy of the MPL was not distributed with this 7# file, You can obtain one at http://mozilla.org/MPL/2.0/. 8# 9# This file incorporates work covered by the following license notice: 10# 11# Licensed to the Apache Software Foundation (ASF) under one or more 12# contributor license agreements. See the NOTICE file distributed 13# with this work for additional information regarding copyright 14# ownership. The ASF licenses this file to you under the Apache 15# License, Version 2.0 (the "License"); you may not use this file 16# except in compliance with the License. You may obtain a copy of 17# the License at http://www.apache.org/licenses/LICENSE-2.0 . 18# 19 20URI_ENCODE=$(dirname "$0")/uri-encode 21FOPTS="" 22sd_platform=$(uname -s) 23 24# linux file utility needs -L option to resolve symlinks 25if [ "$sd_platform" = "Linux" ] ; then 26 FOPTS="-L" 27fi 28 29# do not confuse the system mail clients with OOo and Java libraries 30unset LD_LIBRARY_PATH 31 32# tries to locate the executable specified 33# as first parameter in the user's path. 34which() { 35 if [ ! -z "$1" ]; then 36 for i in $(echo "$PATH" | sed -e 's/^:/.:/g' -e 's/:$/:./g' -e 's/::/:.:/g' -e 's/:/ /g'); do 37 if [ -x "$i/$1" -a ! -d "$i/$1" ]; then 38 echo "$i/$1" 39 break; 40 fi 41 done 42 fi 43} 44 45# checks for the original mozilla start script(s) 46# and restrict the "-remote" semantics to those. 47run_mozilla() { 48 # find mozilla script in PATH if necessary 49 if [ "$(basename "$1")" = "$1" ]; then 50 moz=$(which "$1") 51 else 52 moz=$1 53 fi 54 55 if file $FOPTS "$moz" | grep "script" > /dev/null && grep "[NM]PL" "$moz" > /dev/null; then 56 "$moz" -remote 'ping()' 2>/dev/null >/dev/null 57 if [ $? -eq 2 ]; then 58 "$1" -compose "$2" & 59 else 60 "$1" -remote "xfeDoCommand(composeMessage,$2)" & 61 fi 62 else 63 "$1" -compose "$2" & 64 fi 65} 66 67if [ "$1" = "--mailclient" ]; then 68 shift 69 MAILER=$1 70 shift 71fi 72 73# autodetect mail client from executable name 74case $(basename "$MAILER" | sed 's/-.*$//') in 75 76 iceape | mozilla | netscape | seamonkey | icedove | thunderbird | betterbird) 77 78 while [ "$1" != "" ]; do 79 case $1 in 80 --to) 81 TO=${TO:-}${TO:+,}$2 82 shift 83 ;; 84 --cc) 85 CC=${CC:-}${CC:+,}$2 86 shift 87 ;; 88 --bcc) 89 BCC=${BCC:-}${BCC:+,}$2 90 shift 91 ;; 92 --subject) 93 SUBJECT=$2 94 shift 95 ;; 96 --body) 97 BODY=$2 98 shift 99 ;; 100 --attach) 101 ATTACH=${ATTACH:-}${ATTACH:+,}$(echo "file://$2" | "${URI_ENCODE}") 102 shift 103 ;; 104 *) 105 ;; 106 esac 107 shift; 108 done 109 110 if [ "$TO" != "" ]; then 111 COMMAND=${COMMAND:-}${COMMAND:+,}to=\'${TO}\' 112 fi 113 if [ "$CC" != "" ]; then 114 COMMAND=${COMMAND:-}${COMMAND:+,}cc=\'${CC}\' 115 fi 116 if [ "$BCC" != "" ]; then 117 COMMAND=${COMMAND:-}${COMMAND:+,}bcc=\'${BCC}\' 118 fi 119 if [ "$SUBJECT" != "" ]; then 120 COMMAND=${COMMAND:-}${COMMAND:+,}subject=\'${SUBJECT}\' 121 fi 122 if [ "$BODY" != "" ]; then 123 COMMAND=${COMMAND:-}${COMMAND:+,}body=\'${BODY}\' 124 fi 125 if [ "$ATTACH" != "" ]; then 126 COMMAND=${COMMAND:-}${COMMAND:+,}attachment=\'${ATTACH}\' 127 fi 128 129 run_mozilla "$MAILER" "$COMMAND" 130 ;; 131 132 kmail) 133 134 while [ "$1" != "" ]; do 135 case $1 in 136 --to) 137 TO="${TO:-}${TO:+,}$2" 138 shift 139 ;; 140 --cc) 141 CC="${CC:-}${CC:+,}$2" 142 shift 143 ;; 144 --bcc) 145 BCC="${BCC:-}${BCC:+,}$2" 146 shift 147 ;; 148 --subject) 149 SUBJECT="$2" 150 shift 151 ;; 152 --body) 153 BODY="$2" 154 shift 155 ;; 156 --from) 157 FROM="$2" 158 shift 159 ;; 160 --attach) 161 ATTACH="${ATTACH:-}${ATTACH:+ }--attach "$(echo "file://$2" | "${URI_ENCODE}") 162 shift 163 ;; 164 *) 165 ;; 166 esac 167 shift; 168 done 169 170 ${MAILER} --composer \ 171 ${CC:+--cc} ${CC:+"${CC}"} \ 172 ${BCC:+--bcc} ${BCC:+"${BCC}"} \ 173 ${SUBJECT:+--subject} ${SUBJECT:+"${SUBJECT}"} \ 174 ${BODY:+--body} ${BODY:+"${BODY}"} \ 175 ${FROM:+--header} ${FROM:+"From: ${FROM}"} \ 176 ${ATTACH:+${ATTACH}} \ 177 ${TO:+"${TO}"} 178 ;; 179 180 mutt) 181 182 while [ "$1" != "" ]; do 183 case $1 in 184 --from) 185 FROM="$2" 186 shift 187 ;; 188 --to) 189 TO="${TO:-}${TO:+,}$2" 190 shift 191 ;; 192 --cc) 193 CC="${CC:-}${CC:+,}$2" 194 shift 195 ;; 196 --bcc) 197 BCC="${BCC:-}${BCC:+,}$2" 198 shift 199 ;; 200 --subject) 201 SUBJECT="$2" 202 shift 203 ;; 204 --body) 205 TEMPLATE="$(basename "$0").mutt.XXXXXXXX" 206 BODY=$(mktemp -q -t "${TEMPLATE}") 207 echo "$2" > "$BODY" 208 shift 209 ;; 210 --attach) 211 ATTACH="$2" 212 shift 213 ;; 214 *) 215 ;; 216 esac 217 shift; 218 done 219 220 x-terminal-emulator -e ${MAILER} \ 221 ${FROM:+-e} ${FROM:+"set from=\"${FROM}\""} \ 222 ${CC:+-c} ${CC:+"${CC}"} \ 223 ${BCC:+-b} ${BCC:+"${BCC}"} \ 224 ${SUBJECT:+-s} ${SUBJECT:+"${SUBJECT}"} \ 225 ${BODY:+-i} ${BODY:+"${BODY}"} \ 226 ${ATTACH:+-a} ${ATTACH:+"${ATTACH}"} \ 227 ${TO:+"${TO}"} & 228 rm -f "$BODY" 229 ;; 230 231 evolution | gnome | xdg) # NB. shortened from the dash on 232 233 while [ "$1" != "" ]; do 234 case $1 in 235 --to) 236 if [ "${TO}" != "" ]; then 237 MAILTO="${MAILTO:-}${MAILTO:+&}to=$2" 238 else 239 TO="$2" 240 fi 241 shift 242 ;; 243 --cc) 244 MAILTO="${MAILTO:-}${MAILTO:+&}cc="$(echo "$2" | "${URI_ENCODE}") 245 shift 246 ;; 247 --bcc) 248 MAILTO="${MAILTO:-}${MAILTO:+&}bcc="$(echo "$2" | "${URI_ENCODE}") 249 shift 250 ;; 251 --subject) 252 MAILTO="${MAILTO:-}${MAILTO:+&}subject"=$(echo "$2" | "${URI_ENCODE}") 253 shift 254 ;; 255 --body) 256 MAILTO="${MAILTO:-}${MAILTO:+&}body="$(echo "$2" | "${URI_ENCODE}") 257 shift 258 ;; 259 --attach) 260 MAILTO="${MAILTO:-}${MAILTO:+&}attach="$(echo "file://$2" | "${URI_ENCODE}") 261 shift 262 ;; 263 *) 264 ;; 265 esac 266 shift; 267 done 268 269 MAILTO="mailto:${TO}?${MAILTO}" 270 ${MAILER} "${MAILTO}" & 271 ;; 272 273 groupwise) 274 275 while [ "$1" != "" ]; do 276 case $1 in 277 --to) 278 if [ "${TO}" != "" ]; then 279 MAILTO="${MAILTO:-}${MAILTO:+&}to=$2" 280 else 281 TO="$2" 282 fi 283 shift 284 ;; 285 --cc) 286 MAILTO="${MAILTO:-}${MAILTO:+&}cc="$(echo "$2" | "${URI_ENCODE}") 287 shift 288 ;; 289 --bcc) 290 MAILTO="${MAILTO:-}${MAILTO:+&}bcc="$(echo "$2" | "${URI_ENCODE}") 291 shift 292 ;; 293 --subject) 294 MAILTO="${MAILTO:-}${MAILTO:+&}subject"=$(echo "$2" | "${URI_ENCODE}") 295 shift 296 ;; 297 --body) 298 MAILTO="${MAILTO:-}${MAILTO:+&}body="$(echo "$2" | "${URI_ENCODE}") 299 shift 300 ;; 301 --attach) 302 MAILTO="${MAILTO:-}${MAILTO:+&}attachment="$(echo "file://$2" | "${URI_ENCODE}") 303 shift 304 ;; 305 *) 306 ;; 307 esac 308 shift; 309 done 310 311 MAILTO="mailto:${TO}?${MAILTO}" 312 ${MAILER} "${MAILTO}" & 313 ;; 314 315 dtmail) 316 317 while [ "$1" != "" ]; do 318 case $1 in 319 --to) 320 TO=${TO:-}${TO:+,}$2 321 shift 322 ;; 323 --attach) 324 ATTACH="$2" 325 shift 326 ;; 327 *) 328 ;; 329 esac 330 shift; 331 done 332 333 ${MAILER} ${TO:+-T} ${TO:-} ${ATTACH:+-a} ${ATTACH:+"${ATTACH}"} 334 ;; 335 336 sylpheed | claws) 337 338 while [ "$1" != "" ]; do 339 case $1 in 340 --to) 341 TO=${TO:-}${TO:+,}$2 342 shift 343 ;; 344 --attach) 345 ATTACH=${ATTACH:-}${ATTACH:+,}$(echo "file://$2" | "${URI_ENCODE}") 346 shift 347 ;; 348 *) 349 ;; 350 esac 351 shift; 352 done 353 354 ${MAILER} ${TO:+--compose} ${TO:-} ${ATTACH:+--attach} ${ATTACH:-} 355 ;; 356 357 Mail | Thunderbird | Betterbird | *.app ) 358 359 while [ "$1" != "" ]; do 360 case $1 in 361 --attach) 362 #i95688# fix filenames containing accented chars, whatever alien 363 ATTACH="${ATTACH:-}${ATTACH:+ }"$(echo "file://$2" | "${URI_ENCODE}") 364 shift 365 ;; 366 *) 367 ;; 368 esac 369 shift; 370 done 371 /usr/bin/open -a "${MAILER}" ${ATTACH} 372 ;; 373 374 *) 375 376 # LO is configured to use something we do not recognize, or is not configured. 377 # Try to be smart, and send the mail anyway, if we have the 378 # possibility to do so. 379 380 if [ -x /usr/bin/xdg-email ] ; then 381 MAILER=/usr/bin/xdg-email 382 elif [ -n "$DESKTOP_LAUNCH" ]; then 383 # http://lists.freedesktop.org/pipermail/xdg/2004-August/002873.html 384 MAILER=${DESKTOP_LAUNCH} 385 elif [ -n "$KDE_FULL_SESSION" -a -x /usr/bin/kde-open ] ; then 386 MAILER=/usr/bin/kde-open 387 elif [ -x /usr/bin/xdg-open ] ; then 388 MAILER=/usr/bin/xdg-open 389 elif command -v xdg-open >/dev/null 2>&1 ; then 390 MAILER=$(command -v xdg-open) 391 else 392 echo "Unsupported mail client: $(basename $MAILER | sed 's/-.*^//')" 393 exit 2 394 fi 395 396 while [ "$1" != "" ]; do 397 case $1 in 398 --to) 399 if [ "${TO}" != "" ]; then 400 MAILTO="${MAILTO:-}${MAILTO:+&}to=$2" 401 else 402 TO="$2" 403 fi 404 shift 405 ;; 406 --cc) 407 MAILTO="${MAILTO:-}${MAILTO:+&}cc="$(echo "$2" | "${URI_ENCODE}") 408 shift 409 ;; 410 --bcc) 411 MAILTO="${MAILTO:-}${MAILTO:+&}bcc="$(echo "$2" | "${URI_ENCODE}") 412 shift 413 ;; 414 --subject) 415 MAILTO="${MAILTO:-}${MAILTO:+&}subject"=$(echo "$2" | "${URI_ENCODE}") 416 shift 417 ;; 418 --body) 419 MAILTO="${MAILTO:-}${MAILTO:+&}body="$(echo "$2" | "${URI_ENCODE}") 420 shift 421 ;; 422 --attach) 423 if [ "$MAILER" = "/usr/bin/xdg-email" ]; then 424 MAILTO="${MAILTO:-}${MAILTO:+&}attach="$(echo "file://$2" | "${URI_ENCODE}") 425 else 426 MAILTO="${MAILTO:-}${MAILTO:+&}attachment="$(echo "file://$2" | "${URI_ENCODE}") 427 fi 428 shift 429 ;; 430 *) 431 ;; 432 esac 433 shift; 434 done 435 436 MAILTO="mailto:${TO}?${MAILTO}" 437 ${MAILER} "${MAILTO}" & 438 ;; 439esac 440
