PHPMailer 无效地址。

4
我想使用PHPMailer发送邮件。我使用了这段代码,但是出现了以下错误:

无效地址:example@gmail.com

(在StackOverflow中我使用了虚假地址,在我的真实代码中我使用了真实地址。)
<?php

    $from = "My Name";
    $mail = "example@gmail.com";

    require_once('./class.phpmailer.php');

    $bodytext = "
    <html>
    <head>
    <title>title</title>
    </head>
    <body>
    <h1 style='text-align:center'>Some text</h1>
    <p>more text. Here's a name : $from</p>
    </body>
    </html>
    ";
    try {
        $email = new PHPMailer(true);
        $email->From      = 'webmaster@mysite.com';
        $email->FromName  = 'WebMaster';
        $email->isHTML(true);
        $email->Subject   = 'subject';
        $email->Body      = $bodytext;
        $email->addAddress( $mail, "Name" );
        $email->AddReplyTo($mail,"Name");

        // $file_to_attach = $filePath;

        // $email->AddAttachment( $file_to_attach , 'constat.pdf' );

        $email->Send();
        } catch (Exception $e) {
        echo $e->getMessage();
    }
    // var_dump($email);
?>

由于已经有一个SMTP服务器正在运行,我不需要进行配置,而且PHP函数mail也可以使用。
我该如何解决这个错误?

我已经尝试过了。它返回了“false”,并且由于我在不尝试发送邮件的情况下(我已删除该行),仍然出现错误,因此我认为日志中没有任何内容。 - Seblor
那么这就是你的答案 - 你正在给它一个无效的地址。 - Synchro
这不是无效的地址。即使我使用我的真实邮件地址(Gmail),我也收到了相同的错误。 - Seblor
如果你坚持让自己的生活变得困难...将你的代码削减到最小,然后在validateAddress中添加一些“echo”语句,以便你可以看到它正在做什么。这是非常基本的调试。 - Synchro
我不知道如何使用正则表达式,它们对我来说太长了,难以理解。我尝试了一些网站来检查正则表达式,其中有两个网站告诉我地址匹配正则表达式,而另外两个则说不匹配。 - Seblor
显示剩余7条评论
1个回答

2

好的。实际上,当选择模式为pcre8时,检查电子邮件地址是否有效的正则表达式存在问题。我已经将其更改为:

/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

现在它正在工作。

感谢@Synchro。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接