2009-08-26 6 views
18

У кого-нибудь есть демо?Как отправить html-адрес электронной почты с командой bash «sendmail»?

Sendmail называется не масштабируется, но это бесплатно, так что я решил использовать его в первый сейчас :)

+0

Что вы имеете в виду HTML электронной почты. HTML-страницы в приложении или в электронном письме должны быть в формате HTLM? – Space

+0

email должно быть в формате HTLM – omg

+1

Требуется ли sendmail? Я могу сделать то же самое, используя базовую почту POSIX, но не имею доступа к sendmail. –

ответ

4

Эта страница должна помочь - http://www.zedwood.com/article/103/bash-send-mail-with-an-attachment

Она включает в себя скрипт для отправки по электронной почте с вложением MIME, то есть с включенной HTML-страницей и изображениями.

+0

Не то же самое, что автор поставил под сомнение, но, вероятно, все еще полезно. – ypnos

17

Если вы правильно поняли, вы хотите отправить почту в формате HTML с помощью команды linux sendmail. Этот код работает над Unix. Пожалуйста, попробуйте.

echo "From: [email protected] 
To: [email protected] 
MIME-Version: 1.0 
Content-Type: multipart/alternative; 
boundary='PAA08673.1018277622/server.xyz.com' 
Subject: Test HTML e-mail. 

This is a MIME-encapsulated message 

--PAA08673.1018277622/server.xyz.com 
Content-Type: text/html 

<html> 
<head> 
<title>HTML E-mail</title> 
</head> 
<body> 
<a href='http://www.google.com'>Click Here</a> 
</body> 
</html> 
--PAA08673.1018277622/server.xyz.com 
" | sendmail -t 

Для Sendmail конфигурации деталей, пожалуйста, обратитесь к этому link. Надеюсь это поможет.

+0

Если содержимое электронной почты предварительно сгенерировано и восстановлено в файле content.html, как отправить его в B из A с помощью sendmail? – omg

+0

Если вы хотите прочитать содержимое из внешнего файла, вы можете использовать некоторый скрипт bash для чтения строк из внешнего html-файла и помещать его в поле данных электронной почты или просто скопировать вставку html-кода. Кроме того, пожалуйста, посмотрите ссылку, данную вирусом. Надеюсь это поможет. – Space

+0

Единственная часть, о которой я не знаю, это: border = "PAA08673.1018277622/server.xyz.com". Что это значит? – omg

33

Я не мог получить любой из вывешенных решений для работы, но в конце концов нашел это в другом месте, и он прекрасно работает:

(
echo "From: ${from}"; 
echo "To: ${to}"; 
echo "Subject: ${subject}"; 
echo "Content-Type: text/html"; 
echo "MIME-Version: 1.0"; 
echo ""; 
echo "${message}"; 
) | sendmail -t 
+0

Это отлично работает, MIME-версия не нужна, и я должен лениться, чтобы посмотреть RFC прямо сейчас. – NiKiZe

+1

Это сработало для меня. Спасибо –

+1

@NiKiZe MIME-Version * * требуется, если вы используете функции MIME таких как 'Content-Type:', которые, очевидно, вам нужно использовать здесь. – tripleee

3

Я понимаю, что вы просили Sendmail, но почему бы не использовать по умолчанию mail? Он может легко отправлять html-письма.

Работы по: RHEL 5.10/6.x & CentOS 5,8

Пример:

cat ~/campaigns/release-status.html | mail -s "$(echo -e "Release Status [Green]\nContent-Type: text/html")" [email protected] -v 

код-шер: http://www.codeshare.io/8udx5

2

Чтобы следить за предыдущий ответ, используя mail:

Часто каждый html-вывод интерпретируется почтовой программой клиента, которая не может форматировать вещи, используя фиксированную ширину fo нт. Таким образом, ваше красиво отформатированное выравнивание ascii становится все испорченным. Для отправки старомодной равноширинное то, как Бог предназначил, попробуйте следующее:

{ echo -e "<pre>" 
echo "Descriptive text here." 
shell_command_1_here 
another_shell_command 
cat <<EOF 

This is the ending text. 
</pre><br> 
</div> 
EOF 
} | mail -s "$(echo -e 'Your subject.\nContent-Type: text/html')" [email protected] 

Вам не обязательно нужен «описательный текст здесь.» , но я обнаружил, что иногда первая строка может, в зависимости от ее содержимого, заставлять почтовую программу интерпретировать остальную часть файла так, как вы этого не делали. Сначала попробуйте сценарий с простым описательным текстом, прежде чем настраивать вывод так, как вы хотите.

1

Это проще в использовании, опция -a:

cat ~/campaigns/release-status.html | mail -s "Release Status [Green]" -a "Content-Type: text/html" [email protected] 
0

-a вариант?

Cf. человек страница:

-a file 
      Attach the given file to the message. 

Результат:

Content-Type: text/html: No such file or directory