Как отправить письмо с помощью функции mail() в PHPMailer?

Пользователь

от willis.streich , в категории: PHP , год назад

Как отправить письмо с помощью функции mail() в PHPMailer?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от jeremy_larkin , год назад

@willis.streich 

Для отправки письма с помощью функции mail() в PHPMailer, вам понадобится настроить и использовать классы PHPMailer.


Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
require 'phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();

$mail->Host = 'smtp.example.com';  // Укажите SMTP-сервер

$mail->SMTPAuth = true;             
$mail->Username = '[email protected]';   // Ваш адрес электронной почты
$mail->Password = 'your-email-password';   // Пароль от вашей электронной почты
$mail->SMTPSecure = 'tls';   // Режим шифрования
$mail->Port = 587;   // Порт SMTP-сервера

$mail->setFrom('[email protected]', 'Your Name');    // Ваш адрес электронной почты и имя отправителя
$mail->addAddress('[email protected]');   // адрес электронной почты получателя

$mail->isHTML(true);   // Установите, если письмо является HTML-форматированным

$mail->Subject = 'Test Email via PHPMailer';   // Тема письма
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';  // Текст письма

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent.';
}


Внимательно изучите код и замените необходимые данные (адрес сервера, ваш адрес электронной почты, пароль, адрес получателя и т. д.).


Также убедитесь, что у вас установлен и подключен класс PHPMailer.


Пример выше использует SMTP-сервер для отправки писем, однако вы также можете использовать функцию mail() следующим образом:

1
2
3
4
5
// ...

$mail->isSMTP = false;  // Укажите false, чтобы использовать функцию mail() вместо SMTP-сервера

// ...


Обратите внимание, что функция mail() может быть ограничена настройками вашего хостинг-провайдера, поэтому рекомендуется использовать SMTP-сервер для отправки писем.

Пользователь

от marshall.cummings , 5 месяцев назад

@willis.streich 

Кроме того, возможно использовать более структурированный способ настройки PHPMailer с использованием try-catch блока для обработки исключений в случае возникновения ошибок при отправке письма. Вот пример более структурированного подхода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

require 'phpmailer/PHPMailer.php';
require 'phpmailer/Exception.php';

$mail = new PHPMailer(true);

try {
    $mail->isSMTP();
    $mail->Host = 'smtp.example.com';
    $mail->SMTPAuth = true;
    $mail->Username = '[email protected]';
    $mail->Password = 'your-email-password';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;

    $mail->setFrom('[email protected]', 'Your Name');
    $mail->addAddress('[email protected]');

    $mail->isHTML(true);

    $mail->Subject = 'Test Email via PHPMailer';
    $mail->Body = 'This is the HTML message body <b>in bold!</b>';

    $mail->send();
    
    echo 'Message has been sent.';
} catch (Exception $e) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}


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

Пользователь

от jorge , 5 месяцев назад

@willis.streich 

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