【发布时间】:2021-09-30 13:22:00
【问题描述】:
我正在使用最新版本的 PHPMailer 从我的网站发送电子邮件。我可以发送一些没有 SMTP 参数的电子邮件,但我需要将 SMTP 配置提供给我的对象 PHPMailer()。发送此电子邮件的函数在同一个文件中。
为什么有些电子邮件可能需要 SMTP 配置,而另一些则不需要?
问候
function sendEmailWithoutSMTP(){
$bodyIntern = file_get_contents('emails/myemail.html');
$mailIntern = new PHPMailer(true);
$mailIntern->CharSet = "UTF-8";
try {
//Recipients
$mailIntern->AddAddress('myemail@myemail.com', 'My address');
$mailIntern->SetFrom('myemail@myemail.com', 'My address');
$mailIntern->AddReplyTo('myemail@myemail.com', 'My address');
//Content
$mailIntern->Subject = 'My subject';
$mailIntern->AltBody = '';
$mailIntern->MsgHTML($bodyIntern);
$mailIntern->Send();
} catch (phpmailerException $e) {
//echo $e->errorMessage();
} catch (Exception $e) {
//echo $e->getMessage();
}
}
function sendEmailWithSMTP($email){
require_once 'smtp/getsmtp.php';
$smtp= get_smtp($email);
$bodyClient = file_get_contents('emails/myotheremail.html');
$mailClient = new PHPMailer(true);
$mailClient->CharSet = "UTF-8";
try {
//Server settings
$mailClient->IsSMTP();
$mailClient->SMTPDebug = SMTP::DEBUG_OFF;
$mailClient->SMTPAuth = true;
$mailClient->SMTPSecure = $smtp["secure"];
$mailClient->Host = $smtp["host"];
$mailClient->Username = $smtp["username"];
$mailClient->Password = $smtp["pass"];
$mailClient->Port = $smtp["port"];
$mailClient->Timeout= 30;
//Recipients
$mailClient->AddAddress('myemail@myemail.com', 'My address');
$mailClient->SetFrom('myemail@myemail.com', 'My address');
$mailClient->AddReplyTo('myemail@myemail.com', 'My address');
//Content
$mailClient->Subject = 'My subject';
$mailClient->AltBody = '';
$mailClient->MsgHTML($bodyIntern);
$mailClient->Send();
} catch (phpmailerException $e) {
//echo $e->errorMessage();
} catch (Exception $e) {
//echo $e->getMessage();
}
$this->sendEmailWithoutSMTP();
}
【问题讨论】:
-
每个 SMTP 服务器都是一座城堡,有些吊桥敞开着,有些则有弓箭手、护城河和秘密握手。 (抱歉,我可能还缺少其他很酷的城堡安全功能。)因此,根据您要连接的 SMTP 服务器,需要不同的设置。最有可能的候选者是
SMTPSecure,它处理 SSL/TLS,某些人需要,其他人可选,并且(希望)少数人不可用。 -
这很奇怪,因为我是通过同一台服务器发送这封电子邮件...
标签: php codeigniter smtp phpmailer