0

我看到大多数 PHPMailer 问题都使用 IsSMTP(),但我正在使用我昨天在 SO 上找到的一个非常基本的示例(虽然似乎无法在历史中找到链接),但事实并非如此。

require_once("class.phpmailer.php");

$email = new PHPMailer();

if (isset($_FILES['upload']['size']))
{
    echo 'file size: '.(basename($_FILES['upload']['size'])* 1024).'<br />';

    if (move_uploaded_file($_FILES['upload']['tmp_name'], $target_path))
    {
        echo "The file ".  basename( $_FILES['upload']['name'])." has been uploaded<br />";
        $email->AddAttachment($target_path);
    }
    else
    {
        echo "There was an error uploading the file, please try again!<br />&nbsp;".basename($_FILES['upload']['error']);
    }
}
else
{
    echo "No file was found for the upload.<br />";
}

$email->To = "me@this.com";
$email->From = $email_from;
$email->FromName = $first_name;
$email->Subject = "Query from website";
$email->Body = $email_message;

//echo "mail built...<br />";

if (!$email->Send())
{
    echo "Mailer error: " . $email->ErrorInfo;
}

我试过发送两次。代码执行良好,最后一条if语句返回 true。

我必须使用 IsSMTP() 吗?如果是这样,它是否必须像我在这里看到的那样通过 SSL 路由?

提前致谢?

编辑

我添加了 SMTP 所需的详细信息,如下所示:

$email->IsSMTP();
$email->Host = "localhost";
$email->Port = 465;
$email->SMTPAuth = true;
$email->Username   = "bacon";
$email->Password   = "4ndCh33se";

这似乎没有触发它发送。也仍然没有报告任何错误。

编辑

原来有一个错误,我在一个奇怪的地方有一个重定向,阻止我看到它。错误如下:

您必须提供至少一个不支持的邮件。

4

3 回答 3

1

最初,添加 IsSMTP() 似乎至关重要,并根据其他答案实施。

然而,所有答案都未能解决难题中缺失的一块。

PHPMailer 至少需要添加 1 个地址,如下所示。我只是在这里使用了与属性中设置的地址相同的地址To

$email->To = "me@this.com";
$email->AddAddress("me@this.com");

完成此操作后,一切正常。

于 2013-02-28T13:32:56.853 回答
0
    $email->To = "me@this.com";
    $email->From = $email_from;
    $email->FromName = $first_name;
    $email->Subject = "Query from website";
    $email->Body = $email_message;

除了你的,我还有以下。也许它有帮助:

    $email->IsSMTP();               // set mailer to use SMTP
    $email->Host = "mail.webaddress.com";  // specify main and backup server
    $email->SMTPAuth = true;        // turn on SMTP authentication
    $email->Username = "********";  // SMTP username
    $email->Password = "********";  // SMTP password

我在 class.phpmailer.php 中什么都没改变

尝试这个

    $email->IsSMTP();               // set mailer to use SMTP
    $email->Host = "mail.webaddress.com";  // specify main and backup server
    $email->SMTPAuth = false;        // turn on SMTP authentication
    $email->Port = 25
    $email->SMTPSecure = "";
    $email->Username = "********";  // SMTP username
    $email->Password = "********";  // SMTP password
于 2013-02-28T09:32:39.703 回答
0

如果您想通过您发送邮件,smtp您需要设置SMTP用户名和密码等设置。

而且您还需要添加IsSMTP().

示例 Gmail SMTP 设置

$this->SwiftMailer->smtpType = 'tls';
$this->SwiftMailer->smtpHost = 'smtp.gmail.com';
$this->SwiftMailer->smtpPort = 587;
$this->SwiftMailer->smtpUsername = 'emailaddress@gmail.com';
$this->SwiftMailer->smtpPassword = 'gmailPassword';

$this->SwiftMailer->sendAs = 'html';
$this->SwiftMailer->from = 'sender@gmail.com';
$this->SwiftMailer->fromName = 'Sender Name';
$this->SwiftMailer->to = "receiver@anything.com";

$this->Email->sendAs = 'html';
于 2013-02-28T09:25:30.770 回答