Как создать программу для отправки почты

PHPMailer — очень удобная и популярная библиотека для отправки e-mail сообщений с вашего сайта. В этой статье рассказаны основные настройки библиотеки и приведены примеры кода для отправки сообщений. PHPMailer имеет в своем ассортименте пожалуй всё, что можно пожелать от работы с почтой: отправка разными способами, через разные серверы в т.ч. через smtp, возможность шифровать и подписывать ваши письма, чтобы не попадали в спам и многое другое.

Скачать библиотеку PHPMailer можно с https://github.com/PHPMailer/PHPMailer (кнопка «Code» -> «Download ZIP»).

Для начала разберу пару простых примеров, чтобы было понятно, как отправлять письма с помощью PHPMailer.

Отправка писем через функцию mail() с помощью PHPMailer

Если вы хотите отправлять письма со своего хостинга через свой почтовый сервер, то всё довольно просто и будет выглядеть примерно так:

Как видим, всё довольно просто: подключаем библиотеку, заполняем от кого, кому, тему и текст письма и отправляем. Отправка писем таким способом будет работать только с почтовых адресов вашего домена (если только они не привязаны к другим почтовикам).

Приложение Почта России

Отправка писем через SMTP с помощью PHPMailer на примере Yandex и Google

Можно так же отправить письмо через другой почтовик, например, через Яндекс. Код будет выглядеть примерно так:

Отправка писем через Google имеет один нюанс: нужно в аккаунте google разрешить доступ ненадежным приложениям. Для этого нужно зайти в свой аккаунт https://myaccount.google.com, перейти в безопасность, зайти в раздел «Ненадежные приложения, у которых есть доступ к аккаунту» и там переключить в «Разрешено». На момент написания статьи это страница https://myaccount.google.com/u/0/lesssecureapps.

Дальше в php-программе отправка писем через PHPMailer происходит аналогично как через yandex, нужно только заменить настройки SMTP так:

$mail->Host = ‘smtp.gmail.com’; // Адрес SMTP сервера $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = ‘login’; // ваше имя пользователя $mail->Password = ‘password’; // ваш пароль $mail->SMTPSecure = ‘ssl’; // шифрование ssl $mail->Port = 465; // порт подключения

Читайте также:
Что такое программа меркурий для торговли

Если первый раз запускаете программу отправки через smtp, тогда желательно перед отправкой дополнительно использовать $mail->SMTPDebug = 1; чтобы получать все сообщения клиента и smtp-сервера, т.е. на экран выведется весь процесс подключения, авторизации и т.д., что очень полезно для отладки вашей программы.

Отправка письма с вложением с помощью PHPMailer

Здесь всё довольно просто, нужно лишь использовать метод addAttachment. Приведу пример, заодно продемонстрировав еще несколько дополнительных возможностей:

Адресов получателей можно добавить несколько с помощью addAddress. Или, если необходимо, можно наоборот, очистить все адреса получателей методом clearAddresses(). Очистить все вложения можно с помощью clearAttachments().

Как сделать форму отправки сообщений на email

Так же можно использовать AddEmbeddedImage чтобы добавить в письмо вложение (обычно изображения), которое предназначено для использования в html-коде и не будет доступно для скачивания. Пример использования картинки в письме, не доступной для скачивания:

Таким образом, вы можете отправлять письма с изображениями, которые есть только в теле письма, но их нельзя скачать как вложение. Эти изображения можно использовать в любом месте html-кода письма, нужно лишь указывать вместо url-адреса cid изображения, который вы использовали в AddEmbeddedImage.

Отправка подписанного и зашифрованного письма через PHPMailer

По-умолчанию, PHPMailer шифрует все отправляемые письма. Отключить шифрование письма можно только при отправке писем через SMTP использовав код:

$mail->SMTPSecure = false; $mail->SMTPAutoTLS = false;

Чтобы подписать письмо подписью DKIM, необходимо выполнить несколько действий:

  • Сгенерировать приватный (private) и публичный (public) ключи для вашего домена
  • Добавить DNS-запись для домена типа TXT с публичным ключом
  • Настроить DKIM подпись в PHPMailer перед отправкой письма

Теперь опишу каждый шаг немного подробнее.

Генерация приватного и публичного ключей

Если у вас Linux-хостинг и есть доступ в Shell, то сгенерировать файлы ключей проще простого, нужно выполнить всего 2 команды с обычными правами своего пользователя:

openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout

Соответственно, test-private.pem и test-public.pem — это приватный и публичный ключи. Сохранить их нужно в папке, которая будет не доступна посетителям сайта или кому-то еще кроме вас.

Если нет возможности выполнить команды в shell, тогда чтобы сгенерировать приватный (private) и публичный (public) ключи и сохранить их в файлы, можно воспользоваться следующим кодом:

$domain = ‘test.ru’; // ваш домен $privatekeyfile = ‘test-private.pem’; // имя файла, в который будет записан приватный ключ $publickeyfile = ‘test-public.pem’; // имя файла, в который будет записан публичный ключ if (file_exists($privatekeyfile)) < echo «

Читайте также:
Как сделать привязку программы к железу

Using existing keys

«; $privatekey = file_get_contents($privatekeyfile); $publickey = file_get_contents($publickeyfile); > else < echo «

Create keys»; $pk = openssl_pkey_new( [ ‘digest_alg’ => ‘sha256’, ‘private_key_bits’ => 2048, ‘private_key_type’ => OPENSSL_KEYTYPE_RSA, ] ); openssl_pkey_export_to_file($pk, $privatekeyfile); $pubKey = openssl_pkey_get_details($pk); $publickey = $pubKey[‘key’]; file_put_contents($publickeyfile, $publickey); $privatekey = file_get_contents($privatekeyfile); > echo «

Private key (keep this private!):

» . $privatekey . «»; echo «

Public key:

» . $publickey . «»;

Отправка E-mail с помощью C#

Выделенные и виртуальные серверы в Европе

Постановка задачи
Целью статьи является попытка реализовать работу с SMTP сервером с помощью средств языка C#. Программа должна осуществлять доступ к SMTP серверу, обращаясь к нему для отправки e-mail сообщений прямо из кода программы на выбраные e-mail адреса.

Немного теории
SMTP (англ. Simple Mail Transfer Protocol — простой протокол передачи почты) — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP.

SMTP используется для отправки почты от пользователей к серверам и между серверами для дальнейшей пересылки к получателю. Для приёма почты, почтовый клиент должен использовать протоколы POP3 или IMAP. Работа с SMTP происходит непосредственно на сервере получателя. Поддерживает функции: установление соединения, аутентификация, передача данных.

Существует одна проблема при огранизации работы с этим протаколом, дело в том, что все SMTP сервера требуют авторизации, для отправки почты, а некоторые ещё и требуют некоторую спецификацию, заключающую в том, что бы сначала получить почту, а потом только отправить. И порой бывает, что везде по разному. Работая напрямую с SMTP сервером будет достаточно сложно это учесть, поэтому, лучше воспользваться специальными библиотеками.

Основные моменты реализации отправки Email на C#
В Microsoft .NET Framework есть специальная библиотека, через которую и можно отправить электронную почту E-mail.

Итак начнём, для начало нужно подключить пространства имён:

//E-mail using using System.Web; using System.Net; using System.Net.Mail; using System.Net.Mime;

Для отправки письма в .NetFramework средствами языка C# существуют классы MailMessage и SmtpClient, а если необходимо к письму прикрепить файл, то Вам поможат методы класса Attachmen. Итак, посмотрим на примере как именно это всё реализовуется:

//Авторизация на SMTP сервере SmtpClient Smtp = new SmtpClient(«smtp.mail.ru», 25); Smtp.Credentials = new NetworkCredential(«login», «pass»); Smtp.EnableSsl = false;

Читайте также:
Как включить русский язык в программе winrar

В данном примере в качестве службы для отправки почты использовалась mail.ru. Если Вы хотите использовать yandex или gmail, то нужно поменять адресс SMTP-сервера и порт для отправки:
Yandex — SMTP-сервер: smtp.yandex.ru; Порт: 25;
Gmail — SMTP-сервер: smtp.gmail.com; Порт: 58;

Если у вас почтовый ящик на сервисе mail.ru заканчивается на inbox.ru, list.ru или bk.ru, то соответственно меняется и адрес SMTP-сервера (smtp.inbox.ru, smtp.list.ru и smtp.bk.ru).

Как вы видите, для того, чтобы использовать любой другой почтовый сервис в ваших программах, необходимо только выяснить адрес SMTP-сервера и порт, а также правила авторизации. Необходимо также помнить, что практически все сторонние почтовые сервисы накладывают лимиты на количество отправленных писем в период времени.

Прикрепить файл к письму особого труда не составит, всего пару строк добавить и всё:

//Прикрепляем файл string file = «путь к файлу»; Attachment attach = new Attachment(file, MediaTypeNames.Application.Octet);
// Добавляем информацию для файла ContentDisposition disposition = attach.ContentDisposition; disposition.CreationDate = System.IO.File.GetCreationTime(file); disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); disposition.ReadDate = System.IO.File.GetLastAccessTime(file); Message.Attachments.Add(attach);

Пример простого Email клиента на C#

Источник: www.6kr.ru

Отправка email в Android с помощью JavaMail API без использования встроенного приложения

Разработчики Android-приложений часто сталкиваются с задачей отправки электронной почты из своего приложения. Способ, который первым приходит на ум — использовать встроенное приложение для отправки электронной почты с помощью намерения (Intent). Например:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);

Однако, этот метод имеет свои недостатки. Он открывает встроенное приложение для отправки электронной почты, что приводит к переключению контекста для пользователя. Было бы намного удобнее, если бы можно было отправить электронное письмо непосредственно из приложения, без необходимости открывать другие приложения.

Решение

Для решения этой проблемы можно использовать JavaMail API для отправки электронной почты без использования встроенного приложения. Вот базовый пример того, как это можно сделать:

В этом примере мы создаем новую сессию с помощью метода getDefaultInstance() , которому передаются свойства и аутентификационные данные. Затем создается новое сообщение с помощью MimeMessage , устанавливаются отправитель, получатели, тема и текст сообщения. Наконец, сообщение отправляется с помощью Transport.send() .

Этот код можно использовать в Android-приложении для отправки электронной почты без переключения на встроенное приложение. Однако следует помнить, что для его работы необходимо разрешение на доступ к Интернету в манифесте приложения.

Источник: sky.pro

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru