我们在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身份验证,
我该怎么办?我应该尝试更多,任何想法?
答案 0 :(得分:1)
首先,您使用的是非常旧版本的PHPMailer; get the latest
我不知道你的代码在哪里,但你有一些重要属性的错误 - 我建议你将代码基于PHPMailer提供的示例。特别是,subject
应为Subject
,port
应为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;
}