Архив метки: smtp

Отправка сообщения на email по smtp, в utf8 с телом в html

import smtplib   
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

		 msg = MIMEMultipart('alternative')
		 html_body="Внимание! У вас есть задача (№"+str(id)+") в sbss, которая уже длительное время находится в статусе ожидания! Через 3 дня она будет автоматически закрыта.. <br/><a href=https://oeirfoeriferoife.ru>"+name+"</a>".encode('utf-8')
		 msg.set_charset("utf-8")
		 msg['Subject'] = "Уведомление о длительной задаче №"+str(id);
		 msg['From'] = sbss_from_email
		 msg['To'] = m_arr["email"]		 
		 part = MIMEText(html_body, 'html', 'UTF-8')
		 msg.attach(part)
		 s = smtplib.SMTP(sbss_from_server)
		 s.login(sbss_from_email,sbss_from_pass);
		 s.set_debuglevel(1);
		 s.sendmail(sbss_from_email, m_arr["email"], msg.as_string())
		 s.quit()

Установка Synapse и отправка письма с вложением..

  • Скачиваем исходники с http://synapse.ararat.cz/doku.php/download
  • Копируем папку lib в расположение вашего проекта
  • В свойствах проекта Lazarus: Проект-Параметры проекта-Пути-Другие модули добавляем путь куда положили содержимое lib.

На этом все. Теперь достаточно после uses добавлять необходимые для использования компоненты. Вот так например выглядит простейший пример отправки письма с вложением.

function SendMail (Host, Subject, pTo, From , TextBody,
                HTMLBody, login,password,filename : string) : boolean;
var Msg : TMimeMess; // сообщение
    StringList : TStringList; // содержимое письма
    MIMEPart : TMimePart; // части сообщения (на будущее)
begin
    Msg := TMimeMess.Create; // создаем новое сообщение
//      IdealCharsets:=[CP1251];
//      Msg.Header.CharsetCode:='CP1251';
      StringList := TStringList.Create;
      try
        // Добавляем заголовки
        Msg.Header.Subject := Subject;// тема сообщения
        Msg.Header.From := From; // имя и адрес отправителя
        Msg.Header.ToList.Add(pTo); // имя и адрес получателя
        // создаем корневой элемент
//        MIMEPart := Msg.AddPartMultipart('alternative', nil);
          Msg.AddPartMultipart('', nil);
        if length(TextBody)=0 then
        // если формат HTML
          begin
            StringList.Text := HTMLBody;
            Msg.AddPartHTML(StringList, Msg.MessagePart);
          end
        else
        // если текстовый формат
          begin
            StringList.Text := TextBody;
            Msg.AddPartText(StringList, Msg.MessagePart);
          end;
          if filename<>'' then
            Msg.AddPartBinaryFromFile(filename,Msg.MessagePart);

        // Кодируем и отправляем
        Msg.EncodeMessage;
        // Отправляем.
        if smtpsend.SendToRaw(From,pTo,Host,Msg.Lines,login,password) then
            SendMail:=true
        else
            SendMail:=false;

     finally
       Msg.Free;
       StringList.Free;
     end;
end;