Отправка письма средствами PHP. Класс PHPMailer.

Отправка почты средствами PHP может быть очень простой, а может быть очень сложной, это зависит от того, что и как отправлять
Простое электронное письмо – это обычный текст, и не составляет большого труда для отправки, но когда требуется отправить HTML письмо или письмо с вложенным файлом требуется указать MIME заголовки, писать содержимое файла в письмо и еще целая куча не очень приятных действий и может стать сложной задачей для разработчика.
Но используя класс PHPMailer, отправка писем становится довольно простой задачей. Этот класс берет на себя всю рутинную работу по отправки письма и представляет очень удобный интерфейс для работы с ним, к тому же и бесплатен.
Скачать PHPMailer для PHP4:
phpmailer_v2.0.4_php4
Скачать PHPMailer для PHP5/6:
phpmailer_v5.1_php5_php6
PHPMailer позволяет:
* Посылать письма с множественными: адресатами (TO), копиями (CC), скрытыми копиями (BCC) и устанавливать атрибут REPLY-TO;
* Совмещение нескольких сообщений и вложений файлов;
* Отправка сообщений в виде HTML;
* Многослойные/альтернативные сообщения для клиентов, которые не могут читать HTML письма;
* Перенос строк по словам (word wrap);
* Отправка сообщений через sendmail, PHP mail() или непосредственно по протоколу SMTP
* Библиотека проверена на множестве SMTP серверах: Sendmail, qmail, Postfix, Imail, Exchange, Mercury, Courier;
* Поддержка 8 бит, base64, бинарного режима, и пригодного для печати формата;
* Работает на любой win32 и *nix платформе;
Методы:
void AddAddress (string $address, [string $name = »]) — Добавление адресов получателей письма
bool AddAttachment (string $path, [string $name = »], [string $encoding = ‘base64’], [string $type = ‘application/octet-stream’]) — Прикрепляет файл к письму
void AddBCC (string $address, [string $name = »]) — Добавляет адрес кому отправится скрытая копия
void AddCC (string $address, [string $name = »]) — добавляет адрес кому отправится копия письма
void AddCustomHeader (mixed $custom_header) — Добавление пользовательский заголовок к письму
bool AddEmbeddedImage (string $path, string $cid, [string $name = »], [string $encoding = ‘base64’], [string $type = ‘application/octet-stream’]) — Прикрепляет к письму картинку
void AddReplyTo (string $address, [string $name = »]) — Адрес для ответа на ваше письмо. По умолчанию, адрес для ответа совпадает с адресом, с которого вы отослали письмо (FROM)
void AddStringAttachment (string $string, string $filename, [string $encoding = ‘base64’], [string $type = ‘application/octet-stream’]) — Прикрепляет файл содержимое которого находится в строке
void ClearAddresses () — Удаляет всех занесенных получателей письма
void ClearAllRecipients () — Удаляет всех получателей в том числе и кому копии должны прийти и скрытых получателей
void ClearAttachments () — Удаляет все прикрепленные файлы из письма
void ClearBCCs () — Очищает список скрытых получателей письма
void ClearCCs () — Очищает получателей копий письма
void ClearCustomHeaders () — Удаляет установленные пользовательские заголовки
void ClearReplyTos () — Удаляет адреса для ответов на письмо
void getFile (string $filename)void HeaderLine (mixed $name, mixed $value)bool IsError () — Возвращает true, если произошла ошибка
void IsHTML (bool $bool) — Устанавливает что письмо в HTML формате
void IsMail () — Устанавливает флаг что письмо будет отправлено через PHP mail() функцию
void IsQmail () — Устанавливает флаг что письмо будет отправлено через Qmail MTA.
void IsSendmail () — Устанавливает флаг что письмо будет отправлено через программу Sendmail.
void IsSMTP () — Устанавливает флаг что письмо будет отправлено через SMTP протокол.
bool Send () — Создает сообщение и отправляет его если сообщение не было отправлено, то возвращает false и в переменной ErrorInfo описание ошибки
bool SetLanguage (string $lang_type, [string $lang_path = ‘language/’]) — Устанавливает язык сообщений об ошибках возвращает false если не может загрузить языковой файл
void SmtpClose () — Закрывает SMTP сессию, если таковая существует
Свойства:
string $AltBody — Устанавливает тело сообщения для тех клиентов которые не поддерживают HTML
mixed $attachment — Массив Прикрепленных файлов
mixed $bcc — Массив адресов кому отправится скрытая копия письма
string $Body — Устанавливает тело сообщения может быть в HTML или текстовом виде
mixed $boundarymixed $cc — Массив адресов кому отправится копия письма
string $CharSet — Устанавливает кодировку письма
string $ConfirmReadingTo — Устанавливает адрес кому будет отправлено подтверждение о прочтении
string $ContentType — Устанавливает Content-type письма.
mixed $CustomHeader — Массив пользовательских заголовков
string $Encoding — Устанавливает как кодировку письма. Возможные варианты «8bit», «7bit», «binary», «base64», and «quoted-printable».
string $ErrorInfo — Содержит последнее сообщение об ошибке
mixed $error_countstring $From — Устанавливает адрес отправителя
string $FromName — Устанавливает имя отправителя
string $Helostring $Host — Список SMTP хостов все хосты должны быть разделены точкой с запятой, также можно указать порт например (smtp1.example.com: 25; smtp2.example.com)
string $Mailer — Метод отправки письма: («mail», «sendmail», or «smtp»)
string $MessageID — Устанавливает идентификатор сообщения, которые будут использоваться в заголовке Message-Id
string $Password — SMTP пароль
string $PluginDir — Путь к PHPMailer плагинам. Сейчас используется если SMTP класс не в каталоге include_path.
int $Port — Устанавливает порт для SMTP сервера
int $Priority — Приоритет письма (1 = Высокий, 3 = Нормальный, 5 = Низкий).
mixed $ReplyTo — Массив адресов для ответа на письмо
string $Sender
string $Sendmail — Установка пути к Sendmail
mixed $sign_cert_file
mixed $sign_key_file
mixed $sign_key_pass
bool $SingleTo
mixed $smtp
bool $SMTPAuth — Вкличает или отключает SMTP авторизацию использует Username и Password
bool $SMTPDebug — Вкличает или отключает отладку SMTP
bool $SMTPKeepAlive — Если установлено в true то необходимо явно закрыть SMTP соединение SmtpClose ()
string $SMTPSecure — Устанавливает префикс соединения «», «ssl» или «tls»
string $Subject — Устанавливает тему письма
int $Timeout — Устанавливает timeout для SMTP соединения. Не работает в win32
mixed $to — Массив адресов кому отправится письмо
string $Username — Устанавливает SMTP пользователя
string $Version — Версия PHPMailer-a
int $WordWrap — Устанавливает количество символов в строке и если необходимо переносит на новую строку
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | require_once('../class.phpmailer.php'); $mail = new PHPMailer(); $body = "Мое первое письмо отправленно с помощью PHPMailer"; $mail->SetFrom('name@yourdomain.com', 'First Last'); $mail->AddAddress("whoto@otherdomain.com", "John Doe"); $mail->Subject = "PHPMailer Тестовое письмо используя mail()"; $mail->Body($body); if(!$mail->Send()){ echo "Ошибка отправки письма: " . $mail->ErrorInfo; }else{ echo "Письмо отправленно!"; } |
У меня выдает такую ошибку! Он не знает что за боди
Fatal error: Call to undefined method PHPMailer::Body()
попробуй заменить
$mail->Body($body);
на
$mail->Body=$body;
теперь должно заработать.
У меня не понятный глюк. Отправляется сразу два письма.
Есть ли отличия между этим обработчиком, который вы указываете — class.phpmailer.php — и тем, что лежит на github — и называется по-другому — PHPMailer.php ?
Есть, хотя бы потому что, я эту статью опубликовал 01.10.2011. А на гитхабе постоянно делают коммиты и правки. Думаю, что лучше исправлю статью и поставлю ссылку на PHPMailer на гитхабе.
; charset=windows-1251 Content-Transfer-Encoding: 8bit
В письме выводиться такая строка, как ее убрать?
Добрый день, подскажите как добавить в форму PHPMail прикрепить файлы? причем чтобы можно неколько файлов? Заранее спасибо!