Cпособы отправки письма из 1С

Итак, рассмотрю способы отправки письма из 1С. На самом деле навелосипедить можно и больше, но мне хватит 😉

1) На «прямую», без использования БСП:

	Профиль = Новый ИнтернетПочтовыйПрофиль;
	Профиль.АдресСервераSMTP = "цукацукацука";
	Профиль.ПортSMTP = 465;
	
	Профиль.POP3ПередSMTP = ложь;
	Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
	
	Профиль.ИспользоватьSSLSMTP = ложь;
	
	Профиль.ТолькоЗащищеннаяАутентификацияSMTP = ложь;
	
	Профиль.Пользователь = "vуцкацука1-Noreply@укацукацука.ru";
	Профиль.Пароль = "Hцукацукаg";
	Профиль.ПользовательSMTP = "vцукауцкаly@цукацука.ru";
	Профиль.ПарольSMTP = "укацукацу";
	
	//Профиль.Таймаут = 60;
	
	Почта = Новый ИнтернетПочта;
	                                 
	Сообщить("Проверка cоединения..");
	Попытка
		Почта.Подключиться(Профиль, ПротоколИнтернетПочты.POP3);
		Сообщить("POP3: соединение ОК");
		Сообщить("SMTP: соединение ОК");
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
	
	Попытка
		Почта.Подключиться(Профиль);
		
		Письмо = Новый ИнтернетПочтовоеСообщение;
		Письмо.Тема = Заголовок;
	
		// формируем адрес получателя	
		Получатель = Письмо.Получатели.Добавить(Кому);
		Получатель.ОтображаемоеИмя = Кому;
	
		// добавляем к письму имя отправителя
		Письмо.ИмяОтправителя              = "Сцукауцкания";
		Письмо.Отправитель.ОтображаемоеИмя = "Сцукаувцукацукания";
		сообщить(константы.СК_Почта_Отправитель.Получить());
		Письмо.Отправитель.Адрес           = "noreply@цукаука.ru";
	
		// добавляем текст
		Текст = Письмо.Тексты.Добавить(Тело);
		Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
		
		Почта.Послать(Письмо, , ПротоколИнтернетПочты.SMTP);
		
		Сообщить("SMTP: посылка ОК");
		
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;

2) Используя БСП «Свежих» версий. Не могу сказать точно с какой версий, года примерно с двадцатого:

    УчетнаяЗаписьПочты = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(); 
 
	попытка                                                                                  
	ПараметрыСообщения = Новый Структура;
	ПараметрыСообщения.Вставить("Кому",     Кому);
	ПараметрыСообщения.Вставить("Тема",     Заголовок);
	ПараметрыСообщения.Вставить("Тело",     Тело);

		Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗаписьПочты, ПараметрыСообщения);
		РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗаписьПочты, Письмо);		
	исключение
		сообщить("ой!");
		Сообщить(ОписаниеОшибки());
	конецпопытки;

3) Используя БСП «старых версий»… Очень старых… Где-то года 2015 и ранее:

УчетнаяЗаписьПочты = РаботаСПочтовымиСообщениями.ПолучитьСистемнуюУчетнуюЗапись();
ПараметрыПисьма = Новый Структура("Кому, Тема, Тело,ТипТекста", email, "цуацукау", тело,"HTML");
		РаботаСПочтовымиСообщениями.ОтправитьСообщение(УчетнаяЗаписьПочты, ПараметрыПисьма);

PHP: отправка почты через сервер Microsoft Exchange

Минут 20 пришлось подбирать параметры, чтобы письма пошли. Получился примерно такой класс (с использованием PHPMailer).

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

class TMail {
   public static function SendMail($to,$title,$body){
    global $db;
    $answer=AnswerStruc(true,"Не удалось отправить почту");
    $mail = new PHPMailer(true);
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      
    $mail->isSMTP();                                                
    $mail->Host       = TConfig::GetConfigKeyValue("mail_server");
    $mail->SMTPAuth   = true;                                  
    $mail->Username   = TConfig::GetConfigKeyValue("mail_server_login");
    $mail->Password   = TConfig::GetConfigKeyValue("mail_server_password");
    //$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;           
    $mail->CharSet = 'UTF-8';
    $mail->Encoding = 'base64';
    $mail->Port       = TConfig::GetConfigKeyValue("smtp_port");                                   
    $mail->SMTPAuth = true;
    
    $mail->SMTPOptions = array(
        'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
        )
    );    
    
    $mail->setFrom(TConfig::GetConfigKeyValue("mail_server_sender"));
    $mail->addAddress($to);

    $mail->isHTML(true);                                
    $mail->Subject = $title;
    $mail->Body    = $body;    
    
    if (!$mail->send()) {
        $answer=AnswerStruc(true,$mail->ErrorInfo);
    } else {
        $answer=AnswerStruc(false,"Ok");
    }
    return $answer;
   }   
}

Отправка писем из 1С




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

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

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