【问题标题】:Godaddy phpmailer smpt configurationGodaddy phpmailer smtp 配置
【发布时间】:2017-02-10 21:38:39
【问题描述】:

我们在 godaddy 服务器上有一个站点。我们有一个联系表格。当用户填写表格时,首先我们应该发送邮件到我们的info@oursite,然后我们应该从我们的info@oursite 发送邮件到用户的邮箱。我尝试过的代码如下:

$name = $_POST['name'];
$email = $_POST['email'];


$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug  = 2;
$mail->port = 25;
$mail->Host = 'localhost';
$mail->Username = 'username@example.com';
$mail->Password = 'password';
$mail->addAddress($email, $name);
$mail->subject = 'Subject';
$mail->MsgHTML('mail içeriği');


if ($mail->Send()){

下面的输出:

似乎邮件已送达,但它从未送达邮件。 我尝试了很多东西;

$mail->SMTPAuth = true;

端口 25,80,3535,465(带 ssl), tls,ssl认证,

我该怎么办?我应该多尝试什么,有什么想法吗?

【问题讨论】:

  • 您是否审查了该屏幕截图中的内容,或者是您实际上没有放入任何To: 地址的问题的一部分?顺便说一句,你应该在你的主机上更改你的 SMTP 密码,因为你把它放在你的帖子里了。
  • 感谢我更改了通行证,还删除了一些数据,例如“to: ...”

标签: php phpmailer


【解决方案1】:

首先,您使用的是非常旧的 PHPMailer 版本; get the latest.

我不知道你从哪里得到你的代码,但你有一些重要属性的情况是错误的 - 我建议你将你的代码基于 PHPMailer 提供的示例。特别是,subject 应该是 Subjectport 应该是 Port。发送到 localhost 时,您不需要用户名或密码,因此您不需要设置它们。同样Port默认为25,所以不需要设置。

您没有指定发件人地址,看起来您传递给addAddress 的任何地址都是无效的,因此您正在从任何人向任何人发送消息 - 毫不奇怪,它不会去任何地方!

您的邮件正文似乎是土耳其语 (?),这在默认的 ISO-8859-1 字符集中不起作用,因此我建议您通过设置 $mail->CharSet = 'UTF-8'; 切换到 UTF-8。

在调用 addAddress 时检查您的返回值,以确保提交的值在尝试发送之前有效。

解决了这些问题:

$name = $_POST['name'];
$email = $_POST['email'];

$mail = new PHPMailer;
if (!$mail->addAddress($email, $name)) {
  die('Invalid email address');
}
$mail->isSMTP();
$mail->CharSet = 'UTF-8';
$mail->SMTPDebug = 2;
$mail->Host = 'localhost';
$mail->Subject = 'Subject';
$mail->msgHTML('mail içeriği');
$mail->setFrom('me@example.com', 'My Name');    

if ($mail->send()) {
    echo 'Sent';
} else {
    echo 'Error: '.$mail->Errorinfo;
}

【讨论】:

  • 感谢您的回复。现在它发送邮件,但有一个小问题。当邮件发送到 hotmail 时,它会被丢弃到垃圾邮件文件夹,并且会出现类似“gmail/hotmail 无法确认此邮件是否来自 example.com”的警告。我使用土耳其语,当我使用 UTF-8 时,有些字符是准确的,但有些不准确。这有什么问题?
  • 它进入垃圾邮件是一个单独的问题,这里有很多答案。 UTF-8 数据有很多可能出错的地方 - 搜索它。
  • 经过一番研究,我找到了我的 UTF-8 问题的解决方案。在 class.phpmailer.php 类中,我将“public $CharSet = 'iso-8859-1'”行更改为“public $CharSet = 'iso-8859-9'”。当你这样做时,你不需要不再设置“$mail->CharSet = 'UTF-8'”。
  • 不要编辑库代码。只需在您自己的代码中使用$mail->CharSet = 'iso-8859-9'
  • 感谢您的关注。我按照你说的改了。
猜你喜欢
  • 2012-12-24
  • 2016-11-10
  • 2015-06-05
  • 1970-01-01
  • 2014-03-17
  • 2018-05-29
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
相关资源
最近更新 更多