Отправка HTML-письма с изображениями с помощью email.mime python
Дано: HTML — файл с привязанными к нему картинками, которые лежат в той же директории. Надо: отправить письмо так, чтобы оно отображалось у получателя как HTML-страница с картинками на своём месте. Что я пытался делать: У меня есть код python, который отправляет HTML, но у получателя вместо картинок просто прямоугольники с красными крестиками (нет картинок). Вот мой код:
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.header import Header def mail_sender(recip, subj, text): DEFAULT_SMTP_SERVER = '. ' SENDER = '. ' RECIPIENT = recip RECIPIENT2 = '. ' msg = MIMEMultipart('alternative') msg['From'] = SENDER msg['To'] = RECIPIENT msg['Bcc'] = RECIPIENT2 sub_hed = subj msg['Subject'] = Header(sub_hed, 'utf-8').encode() msg.attach(MIMEText(text, 'plain')) msg.attach(MIMEText(text, 'html')) message = msg.as_string() server = smtplib.SMTP(DEFAULT_SMTP_SERVER) server.sendmail(SENDER, [RECIPIENT], message) server.sendmail(SENDER, [RECIPIENT2], message) server.quit() f = open('TestHTML.html', 'r') result = f.read() mail_sender('[email protected]', 'тест', result)
ВОПРОС: Как сделать так, чтобы получатель видел полноценный HTML-шаблон с картинками? Может быть, подход неправильный или что-то надо изменить в коде?
Отслеживать
1,191 9 9 серебряных знаков 25 25 бронзовых знаков
Content Type. Name Свойство
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает параметр имени, который содержится в заголовке Content-Type, представляемом данным экземпляром.
public: property System::String ^ Name < System::String ^ get(); void set(System::String ^ value); >;
public string Name
member this.Name : string with get, set
Public Property Name As String
Значение свойства
Строка String, которая содержит значение, связанное с параметром имени.
Примеры
В следующем примере кода задается значение свойства , чтобы указать имя файла, вложенного в поток.
// The following example sends a summary of a log file as the message // and the log as an email attachment. static void SendNamedErrorLog( String^ server, String^ recipientList ) < // Create a message from logMailer@contoso.com to recipientList. MailMessage^ message = gcnew MailMessage( L"logMailer@contoso.com",recipientList ); message->Subject = L"Error Log report"; String^ fileName = L"log.txt"; // Get the file stream for the error log. // Requires the System.IO namespace. FileStream^ fs = gcnew FileStream( fileName,FileMode::Open,FileAccess::Read ); StreamReader^ s = gcnew StreamReader( fs ); int errors = 0; while ( s->ReadLine() != nullptr ) < // Process each line from the log file here. errors++; >message->Body = String::Format( L" errors in log as of ", errors, DateTime::Now ); // Close the stream reader. This also closes the file. s->Close(); // Re-open the file at the beginning to make the attachment. fs = gcnew FileStream( fileName,FileMode::Open,FileAccess::Read ); // Make a ContentType indicating that the log data // that is attached is plain text and is named. ContentType^ ct = gcnew ContentType; ct->MediaType = MediaTypeNames::Text::Plain; ct->Name = String::Format( L"log.txt", DateTime::Now ); // Create the attachment. Attachment^ data = gcnew Attachment( fs,ct ); // Add the attachment to the message. message->Attachments->Add( data ); // Send the message. // Include credentials if the server requires them. SmtpClient^ client = gcnew SmtpClient( server ); client->Credentials = CredentialCache::DefaultNetworkCredentials; client->Send( message ); data->~Attachment(); client->~SmtpClient(); // Close the log file. fs->Close(); return; >
// The following example sends a summary of a log file as the message // and the log as an email attachment. public static void SendNamedErrorLog(string server, string recipientList) < // Create a message from logMailer@contoso.com to recipientList. MailMessage message = new MailMessage( "logMailer@contoso.com", recipientList); message.Subject = "Error Log report"; string fileName = "log.txt"; // Get the file stream for the error log. // Requires the System.IO namespace. FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); StreamReader s = new StreamReader(fs); int errors = 0; while (s.ReadLine() != null) < // Process each line from the log file here. errors++; >// The email message summarizes the data found in the log. message.Body = String.Format(" errors in log as of ", errors, DateTime.Now); // Close the stream reader. This also closes the file. s.Close(); // Re-open the file at the beginning to make the attachment. fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); // Make a ContentType indicating that the log data // that is attached is plain text and is named. ContentType ct = new ContentType(); ct.MediaType = MediaTypeNames.Text.Plain; ct.Name = "log" + DateTime.Now.ToString() + ".txt"; // Create the attachment. Attachment data = new Attachment(fs, ct); // Add the attachment to the message. message.Attachments.Add(data); // Send the message. // Include credentials if the server requires them. SmtpClient client = new SmtpClient(server); client.Credentials = CredentialCache.DefaultNetworkCredentials; try < client.Send(message); >catch (Exception ex) < Console.WriteLine("Exception caught in SendNamedErrorLog: ", ex.ToString()); > data.Dispose(); // Close the log file. fs.Close(); return; >
Комментарии
В следующем примере заголовка Content-Type свойство имеет «data.xyz» значение Name .
content-type: application/x-myType; name=data.xyz
Грамматика, которая подробно описывает синтаксис заголовка Content-Type, описана в rfc 2045, раздел 5.1, доступный по адресу https://www.ietf.org.
При указании содержимого Attachment для в качестве Stream или Stringможно использовать , Name чтобы задать имя файла, в котором хранится содержимое в системе получателя.
Send-MailMessage: отправка писем из PowerShell

16.03.2023

itpro

PowerShell, Windows 10, Windows 11, Windows Server 2019

комментариев 17
Встроенный командлет Send-MailMessage можно использовать для отправки email писем из PowerShell. Данный встроенный командлет доступен для отправки почтовых email сообщений в PowerShell начиная с версии 2.0 (командлет применяется вместо класса .Net System.Net.Mail). Send-MailMessage позволяет отправить через SMTP сервер письма с вложениями, использовать HTML формат для тела письма, включить уведомления о доставке, отправить письмо сразу нескольким получателям и т.д. В этой статье мы рассмотрим, как использовать Send-MailMessage для отправки email сообщений из ваших скриптов PowerShell.
Для получения базовой информации о синтаксисе командлета, выполните команду:
Send-MailMessage [-To][-Subject] [[-Body] ] [[-SmtpServer] ] [-Attachments ] [-Bcc ] [-BodyAsHtml] [-Cc ] [-Credential ] [-DeliveryNotificationOption ] [-Encoding ] -From [-Port ] [-Priority ] [-UseSsl] []

- From – адрес отправителя если SMTP сервер не проверяет адрес отправителя, то можно отправить письмо от имени любого email адреса);
- To – email адрес получателя;
- SMTPServer – адрес SMTP сервера , через который нужно выполнить отправку письма
Адрес SMTP сервера не обязательно указывать, если вы задали адрес почтового сервера в переменной окружения $PSEmailServer:
Для интерактивной отправки писем через SMTP сервер вы можете использовать команду telnet.
Отправка письма из консоли PowerShell с помощью командлета Send-MailMessage
Следующая команда PowerShell отправит письмо с указанной темой (Subject) и содержимым (Body) нескольким получателям.
Send-MailMessage -From ‘[email protected]’ -To ‘[email protected]’,'[email protected]’ -Subject «Alert from Server1» -Body «It is email body» –SmtpServer ‘smtp.winitpro.ru’
Вы можете отправить письмо на один или несколько почтовых ящиков, в канал Teams или на адрес группы рассылки Exchange.
Для удобства редактирования предыдущую команду отправки можно представить так:
Send-MailMessage `
-SmtpServer smtp.winitpro.ru `
-To ‘[email protected]’,'[email protected]’ `
-From ‘[email protected]’ `
-Subject «test» `
-Body «Тема письма на русском» `
-Encoding ‘UTF8’
Обратите, что в последней команде мы дополнительно указали, что нужно использовать для письма кодировку UTF8. Иначе, если тема или текст письма будут содержать русские буквы, то они будут отображены знаками вопроса.

В Windows PowerShell по умолчанию используются кодировки ANSI и ASCII. Если вы обновили свою версию до PowerShell Core 7.x, имейте в виду что в этой версии по умолчанию уже используется кодировка UTF8.
Вы можете задать нескольких получателей с помощью параметров:
- To — обычные получатели;
- Cc – получатели копии письма;
Вы можете включить для письма уведомление о доставке с помощью параметра -DeliveryNotificationOption. Возможные значения:
- OnSuccess (отчет при удачной доставке);
- OnFailure (отчет если доставка не выполнена);
- Delay (оповестить, если доставка отложена).
В одной команде можно указать сразу несколько опций:
Send-MailMessage … -DeliveryNotificationsOptions ‘OnSuccess’, ‘OnFailure’
Уведомление о доставки будет отправлено в почтовый ящик, указанный в поле -From.
Также вы можете задать приоритет письма (отображается не во всех клиентах):
Если нужно добавить в письмо вложение, используйте параметр -Attachments. В следующем примере мы отправим письмо в формате HTML (параметр -BodyAsHtml) и прикрепим к письму файлы report1.txt и report2.txt с локального диска:
$MailMessage = @To /cdn-cgi/l/email-protection» data-cfemail=»e382878e8a8da3948a8d8a9793918ccd9196″>[email protected]
Bcc /cdn-cgi/l/email-protection» data-cfemail=»09646867686e6c7b497e6067607d797b66277b7c»>[email protected]», «[email protected]»
From /cdn-cgi/l/email-protection» data-cfemail=»1261776064776052657b7c7b6662607d3c6067″>[email protected]>»
Subject = «Отчет с сервера DC»
Body smtp.winitpro.ru»
Port = 25
UseSsl = $false
BodyAsHtml = $true
Encoding = “UTF8”
Attachment = “C:\ps\report1.txt”, “C:\ps\report2.txt”
>
Send-MailMessage @MailMessage -Credential $cred
В этом примере мы также заменили Display Name у получателя на “DC server”.
Вот как выглядит это письмо с HTML форматированием и вложениями в интерфейсе Outlook.

Если вы отправляете письмо от имени общего почтового ящика Exchange/Microsoft 365, на который вам предоставлены права SendAs, вы можете указать, чтобы его копия сохранялась в папке Отправленные/Sent этого ящика. Для этого, нужно для почтового ящика включить параметр MessageCopyForSentAsEnabled:
Set-Mailbox sharedmailbox -MessageCopyForSentAsEnabled $True
SMTP аутентификация и TLS/SSL шифрование в команде Send-MailMessage
По умолчанию командлет Send-MailMessage выполняет отправку письма через стандартный SMTP порт TCP 25. Если ваш SMTP сервер позволяет отправить письмо только по защищенному протоколу, нужно указать номер порта в атрибуте –Port (чаще всего это 465 или 587) и опцию UseSsl:
-SmtpServer ‘smtp.winitpro.ru’ -Port 465 –UseSsl
Если SSL сертификат SMTP сервера не соответствует FQDN, указанному в HELO то появится ошибка:
Send-MailMessage: The remote certificate is invalid according to the validation procedure.
При отправке письма с помощью шифрования SSL/TLS также может появится ошибка:
Send-MailMessage : Unable to read data from the transport connection: net_io_connectionclosed
В этом случае рекомендуется проверить
- Что указанный порт доступен: Test-NetConnection -winitpro.ru –Port 465
- Попробуйте использовать другой SMTP порт. Например, 587 (msa) вместо 465 (smtps). Порт 587 является стандартным при использовании расширения STARTTLS.
- Если у вас используется старая версий ОС (Windows Server 2012/Windows 8 и ниже), нужно включить поддержку протокола TLS2 для PowerShell с помощью команды:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
В следующей таблице перечислены параметры SMTP серверов популярных публичных email провайдеров, которые вы можете использовать для отправки почты из PowerShell (обратите внимание, что у большинства из них нужно дополнительно разрешить отправку писем через SMTP из интерфейса аккаунта):
| Название | Адрес SMTP сервера | Порт | Тип шифрования |
| Yandex | smtp.yandex.ru | 465 | TLS/SSL |
| Mail.ru | smtp.mail.ru | 465 | TLS/SSL |
| Gmail | smtp.gmail.com | 587 |
Если SMTP сервер запрещает анонимную отправку (запрещен relay), то при попытке отправить письмо вы получите ошибку:
5.7.1 Client was not authenticated.
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM.
В этом случае вы можете аутентифицироваться на SMTP сервере с помощью параметра –Credential.
Можно интерактивно запросить данные пользователя для аутентификации
Send-MailMessage …… -Credential (Get-Credential)

Или вы можете сохранить имя пользователя и пароль для аутентификации на SMTP через переменную:
$cred = Get-Credential
Send-MailMessage . -Credential $cred
PowerShell: отправка письма через Gmail/Mail.ru/Яндекс
Для отправки письма через ваш ящик на одном из публичных почтовых сервисов вместо пароля для входа в ящик рекомендуется использовать App Password. Например, в Gmail вы можете создать App Password после того, как настроите 2 факторную аутентификацию для вашего аккаунта Google. Сгенерируйте и скопируйте ваш App password (в google это пароль из 16 символов).

Следующий пример показывает, как отправить письмо из PowerShell из вашего ящика Google. Вместо пароля вашего аккаунта нужно использовать App Password. В этом примере мы сохраним пароль для подключения к SMTP серверу непосредственно в коде скрипта PowerShell.
$From /cdn-cgi/l/email-protection» data-cfemail=»770312040337101a161e1b5914181a»>[email protected]»
$To /cdn-cgi/l/email-protection» data-cfemail=»ef9b8e9d888a9daf88828e8683c18c8082″>[email protected]»
$Subject = «Test message subject from $($env:computername)»
$Body = «Email text»
$Password = «yourgoogleapppassword» | ConvertTo-SecureString -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $From, $Password
Send-MailMessage -From $From -To $To -Subject $Subject -Body $Body -SmtpServer «smtp.gmail.com» -port 587 -UseSsl -Credential $Credential
Обратите внимание, что при использовании этой команды ваш пароль будет сохранен в открытом виде в истории команд PowerShell. Смотри статью о том, как использовать и защищать пароли в скриптах PowerShell.
При использовании команды Send-MailMessage в новых версиях PowerShell Core 7.x появляется предупреждение:
WARNING: The command 'Send-MailMessage' is obsolete. This cmdlet does not guarantee secure connections to SMTP servers. While there is no immediate replacement available in PowerShell, we recommend you do not use Send-MailMessage at this time. See https://aka.ms/SendMailMessage for more information.

Командлет Send-MailMessage использует .NET класс SmtpClient для отправки писем, которые не поддерживает современные методы проверки подлинности, в том числе Microsoft Modern Authentication. В Microsoft 365/Exchange Online для отправки писем из PowerShell рекомендуется использовать Graph API, например, командлет Send-MgUserMai l или Invoke-RestMethod для вызова метода sendMail в REST API (подробнее в статье PowerShell: Отправка писем через Microsoft Graph API).
Предыдущая статья Следующая статья
Отправка e-mail из скриптов
На данной странице рассматриваются различные способы правильной отправки почтовых сообщений, содержащих не-ASCII символы в тексте и вложениях.
Скрипты всевозможных форумов обычно не рассчитаны на язык, отличный от английского, и при использовании их с русским языком генерируют неправильные сообщения. Большинство почтовых клиентов научились понимать неправильно сформированные письма, но далеко не все, и тем более не все виды ошибок. Подводные камни могут поджидать где угодно, да и лучше делать программы, формирующие письма в соответствии со стандартами. Советы, данные здесь, помогут вам отправлять правильные письма на любом языке. Если вы увидели здесь несоответствие с каким-либо RFC — правьте смело, либо пишите на страницу обсуждения.
[править] Теория
[править] Кодировка
В заголовке письма допускаются только ASCII символы, поэтому строка, содержащая не-ASCII символы (например, русские буквы), должна быть закодирована.
В теле письма можно использовать 8 битные (не-ASCII) символы, правда с некоторыми ограничениями (максимальная длина строки, ?). Поэтому чтобы передать не-ASCII текст в неизменном виде, его лучше закодировать.
Прикрепляемые файлы (mime, attach) необходимо кодировать в base64, чтобы они были получены неизменными.
[править] Адрес отправителя
Ни в коем случае нельзя указывать e-mail клиента, в адресе отправителя, так как часто такие письма будут уходить в «Спам» или вообще удаляться, из-за действия SPF. Правильно отправителем указывать сам сервер, например robot@example.com, а в поле «Reply-to» можно указать адрес клиента. Тогда, получив письмо, человек может нажать «ответить» и таким образом напишет клиенту.
P.S.: в GMail, если адрес из поля «From» есть в списке адресов «Send mail as», то поле «Reply-to» будет игнорироваться при нажатии на кнопку «Ответить». Посмотреть список этих адресов можно по ссылке: https://mail.google.com/mail/#settings/accounts
[править] RFC
[править] Скрипты
[править] Отправка в Perl
Нам понадобятся модули MIME::Base64 и Encode, входящие в стандартную поставку Perl («Core modules»).
Для кодирования заголовков письма (тема, отправитель, получатель) будем использовать функцию encode модуля Encode. У неё есть специальный режим для кодирования заголовков писем, при этом он принимает только utf-8.
Итак, подключаем модуль и кодируем: use Encode qw/encode decode/; my $Mail_subject = encode(‘MIME-Header’, decode(‘utf8’, ‘Тестовая тема’)); my $Mail_from = encode(‘MIME-Header’, decode(‘utf8’, ‘Тестовый Отправитель ‘)); my $Mail_to = encode(‘MIME-Header’, decode(‘utf8’, ‘Тестовый Получатель ‘));
Следует отметить использование функции decode для приведения текста к кодировке utf-8. Даже если текст вашего скрипта уже в utf-8, вам всё равно придётся вызвать функцию decode. Об этом написано здесь:
CAVEAT: When you run $string = decode("utf8", $octets), then $string may not be equal to $octets. Though they both contain the same data, the UTF8 flag for $string is on unless $octets entirely consists of ASCII data (or EBCDIC on EBCDIC machines). See «The UTF8 flag» below.
[править] С помощью Mail::Sendmail
В руководстве указано, что модуль сам добавит указанные заголовки, если они не будут заданы
Mime-Version: 1.0 Content-Type: 'text/plain; charset="iso-8859-1"' Content-Transfer-Encoding: quoted-printable or (if MIME::QuotedPrint not installed) Content-Transfer-Encoding: 8bit Date: [string returned by time_to_date()]
[править] С помощью MIME::Lite
Раздел не написан.
[править] Отправка в PHP
$headers = "Reply-To: от_чьего_имени_отправить\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: сколько_битная_кодировка_текста_письмаbit\r\nContent-type: text/plane; charset=кодировка_контента_письма\r\n"; $sublectMail = "=?кодировка_контента_письма?B?".base64_encode(Тема_письма)."?=\r\n"; mail(кому_отослать,$sublectMail,$message,$headers);
$headers="Reply-To: $model->email\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: 8bit\r\nContent-type: text/plane; charset=UTF-8\r\n"; $sublectMail = "=?UTF-8?B?".base64_encode('Вопрос от '.$model->name)."?=\r\n"; $messageMail = $model->body; mail($params['adminEmail'],$sublectMail,$messageMail,$headers);
[править] Отправка в Python
С использованием библиотеки smtplib
import smtplib from email.mime.text import MIMEText me = 'admin@mail.ru' you = 'kot_smit@mail.ru' smtp_server = 'smtp.mail.ru' msg = MIMEText('Message e-mail') msg['Subject'] = 'The contents of ' msg['From'] = me msg['To'] = you s = smtplib.SMTP(smtp_server) s.sendmail(me, [you], msg.as_string()) s.quit()
[править] Отправка из оболочки командной строки
[править] С помощью sendmail
Файл /usr/bin/sendmail многие почтовые программы (в частности, Exim4) ставят алиасом на себя, обрабатывая отправку почты, и принимая большинство флагов sendmail
Включение сендмайла для отправки (Для FreeBSD):
# строка в /etc/rc.conf ##### SENDMAIL_ENABLE="NO" # Комментарий: NO - только для отсылки, NONE - отключить полностью # После чего перезагрузиться или запусить вручную под рутом: /etc/rc.d/sendmail restart
Отправка сообщения из файла FILE.eml (формат — обычное сообщение почты, RFC 822):
(проверена работа во FreeBSD от 5 до 8 (sendmail из комплекта поставки), и Debian 6 (стандартный симлинк с sendmail на exim4)):
COMMAND cat FILE.eml | /usr/sbin/sendmail -t -f fromuser@domain.ru где -t -- считывать адреса доставки из заголовков письма -f fromuser@domain.ru -- использовать этот обратный адрес в SMTP-сессии FILE.eml -- файл или эквивалентный сгенерированный вывод, должен быть (между дефисами): ------------------------- From: fromuser@fromdomain.ru To: touser1@domain.ru, touser2@domain.ru, touser3@domain.ru Subject: Email from server (FreeBSD, Debian) text text Пустая строка после заголовков обязательна! Также можно добавлять другие необходимые заголовки. text text Возможны русские буквы (составлять в KOI8-R, это кодировка по-умолчанию для почтовых клиентов. Либо использовать любую кодировку, с указанием соотв. заголовка. text text --------------------------
[править] С помощью mutt
Mutt является консольным почтовым клиентом (POP3, IMAP), одним из самых мощных. Также им удобно отправлять письма с вложениями из командной строки
Нужно учитывать, что mutt по умолчанию сам только генерирует письмо, для отравки он запускает sendmail или эквивалент (настраивается) примерно таким же образом, что и в предыдущем пункте.
Чтобы mutt отправлял сообщения по SMTP самостоятельно (в том числе с авторизацией, на другой порт и т.п.), необходимо указывать параметр «set smtp_url=smtp://smtp.domain.com/» в конфигурационном файле /etc/Muttrc или в командной строке.
В отличие от sendmail, клиент mutt делает перекодировку русских названий (темы, адресов). Тип (Content-type) вложения (по которому получившие письмо почтовые клиенты понимают, как правильно обрабатывать вложенный файл) mutt устанавливает по расширению файла-вложения, в соответствии с системным файлом /etc/mime.types (для Debian).
Так, чтобы вложение понималось почтовым клиентом именно вложенным письмом, а не текстом, файл вложения для mutt должен иметь расширение .eml (Content-type=message/rfc822).
%$ cat message | mutt -x -a file.jpg -s "тема" address@host.net
Отправляется сообщение из файла message по адресу address@host.net. К письму прикрепляется файл file.jpg. Обратный адрес и прочие атрибуты письма могут браться из конфигурационного файла ~/.muttrc или формироваться автоматически.
Более подробный синтаксис:
%$ cat message.txt | mutt -e 'set from="Name From "' -e 'set envelope_from=yes' -a file.1 -a file.2 -s 'Subject' to@email.ru где: -a -- вкладываемые файлы (может быть несколько) -e -- параметры в командной строке, используемые в muttrc (может быть несколько) from -- обратный адрес в письме (по умолчанию текущий_пользователь@имя_системы) envelope_from -- если "yes", в параметры обратного адреса для SMTP передаётся обратный адрес из "from", (не работает со старыми версиями sendmail) Реальный пример, debian 6 -- отправить текст из файла body.txt и вложением все файлы-письма по маске *.eml: $/usr/bin/mutt -x -e 'set from=from@email.ru' -s 'Subject email' to@email.ru -a *.eml < body.txt
[править] С помощью mpack
Mpack - старая программа (Linux, FreeBSD), предназначенная для упаковывания файла в MIME-формат.
Если в качестве выхода указать емейл (или несколько), файл будет отправлен с помощью sendmail или его заменителя.
Особенности - вложить в письмо можно только один файл, но есть опция максимального размера, если он превышается, генерируется несколько выходных файлов (писем).
mpack [ -s subject ] [ -d descriptionfile ] [ -m maxsize ] [ -c content-type ] file address . mpack [ -s subject ] [ -d descriptionfile ] [ -m maxsize ] [ -c content-type ] -o outputfile file
[править] С помощью biabam
Biabam не умеет правильно кодировать русский текст при отправке. Если вы знаете, как это исправить — напишите здесь.
Данная программа использует штатный клиент mail.
%$ cat message | biabam file.jpg -s "тема" address@host.net
Отправляется сообщение из файла message по адресу address@host.net. К письму прикрепляется файл file.jpg. Обратный адрес и прочие атрибуты письма могут браться из конфигурационного файла ~/.mailrc.
[править] Ссылки
- Отправка писем с авторизацией на SMTP-сервере из Perl (рус.) — в ней так же учитывается перекодирование заголовков и тела письма.
- Грамотная настройка сервера отправки почты для скриптов PHP (рус.)
- Как грамотно отправлять почту из скриптов (в частности — на PHP) (рус.)
- Unicode and e-mail (англ.) статья на английской wikipedia.
[править] Лицензия на текст
Текст доступен на условиях лицензии Creative Commons Attribution/Share-Alike
[править] Материалы по настройке почтовых систем на Xgu.ru
- Sendmail
- Борьба со спамом в Sendmail
- Использование ClamAV, SpamAssassin, MIMEDefang для борьбы с нежелательной почтой в Sendmail
- Переход с POP3 на IMAP4
- Копирование исходящей почты с помощью Sendmail
- Отправка e-mail из скриптов
- Cyrus IMAP Server