无法使用 PHPmailer 或 swift 邮件程序发送邮件
Cannot send mail using PHPmailer or swift mailer
当使用 PHPmailer 或 swift 邮件程序通过 mail.google.com 发送邮件时,两者都会在 30 秒后超时。 PHPmailer代码如下
<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Load Composer's autoloader
require 'vendor/autoload.php';
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'mail.google.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[my email]@gmail.com'; // SMTP username
$mail->Password = '[password]'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
//Recipients
$mail->setFrom('[my email]@gmail.com', 'Adam Johnston');
$mail->addAddress('[my email]@gmail.com', 'Adam Johnston'); // Add a recipient
//$mail->addAddress('ellen@example.com'); // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
//Attachments
//$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
这是 swift 邮件程序代码:
require_once './vendor/autoload.php';
// Create the Transport
$transport = (new Swift_SmtpTransport('mail.google.com', 465))
->setUsername('[my email]@gmail.com')
->setPassword('[password]')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$message = (new Swift_Message('Wonderful Subject'))
->setFrom(['[my email]@gmail.com' => 'Adam Johnston'])
->setTo(['[my email]@gmail.com' => 'Adam Johnston'])
->setBody('Here is the message itself')
;
// Send the message
$result = $mailer->send($message);
因为两者都超时,我假设两者都已正确安装,但我设置不正确。提前致谢。
对于 gmail,SMTP 服务器(Host
字段)应为 smtp.gmail.com
。
我通过更改为 TLS 并将端口更改为 587 来修复它。也感谢 Jiri 指出我愚蠢的拼写错误。
还要确保您已为您的帐户启用 "Less secure apps",以便为 Gmail 启用密码验证。默认情况下未启用,并且仅允许 OAUTH 身份验证(不能通过 SMTP 使用)。 https://support.google.com/accounts/answer/6010255?hl=en
当使用 PHPmailer 或 swift 邮件程序通过 mail.google.com 发送邮件时,两者都会在 30 秒后超时。 PHPmailer代码如下
<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Load Composer's autoloader
require 'vendor/autoload.php';
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'mail.google.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[my email]@gmail.com'; // SMTP username
$mail->Password = '[password]'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
//Recipients
$mail->setFrom('[my email]@gmail.com', 'Adam Johnston');
$mail->addAddress('[my email]@gmail.com', 'Adam Johnston'); // Add a recipient
//$mail->addAddress('ellen@example.com'); // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
//Attachments
//$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
这是 swift 邮件程序代码:
require_once './vendor/autoload.php';
// Create the Transport
$transport = (new Swift_SmtpTransport('mail.google.com', 465))
->setUsername('[my email]@gmail.com')
->setPassword('[password]')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$message = (new Swift_Message('Wonderful Subject'))
->setFrom(['[my email]@gmail.com' => 'Adam Johnston'])
->setTo(['[my email]@gmail.com' => 'Adam Johnston'])
->setBody('Here is the message itself')
;
// Send the message
$result = $mailer->send($message);
因为两者都超时,我假设两者都已正确安装,但我设置不正确。提前致谢。
对于 gmail,SMTP 服务器(Host
字段)应为 smtp.gmail.com
。
我通过更改为 TLS 并将端口更改为 587 来修复它。也感谢 Jiri 指出我愚蠢的拼写错误。
还要确保您已为您的帐户启用 "Less secure apps",以便为 Gmail 启用密码验证。默认情况下未启用,并且仅允许 OAUTH 身份验证(不能通过 SMTP 使用)。 https://support.google.com/accounts/answer/6010255?hl=en