【问题标题】:Using PHPMailer to send emails to Variable addresses使用 PHPMailer 向可变地址发送电子邮件
【发布时间】:2021-02-15 00:04:50
【问题描述】:

我创建了一个表单,完成后他们被要求从下拉列表中选择他们希望通过电子邮件发送给的人。

我的问题是如何将该变量添加到 $mailer.

现在是这样写的

$mailer -> AddAddress('email@email.com','First Last');

如何在其中获取我的变量

$mailer -> AddAddress($emailAddress) - Doesn't work.

我也试过了

"'"$emailAddress"'" - 这给了我 - 无效地址:'email@email.com' 这令人沮丧,因为这是它正在寻找的格式。

谢谢,告诉我

这是我用来调用电子邮件的完整代码

$mail->Host       = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "mail.yourdomain.com"; // sets the SMTP server
$mail->Port       = 26;                    // set the SMTP port for the GMAIL server
$mail->Username   = "yourname@yourdomain"; // SMTP account username
$mail->Password   = "yourpassword";        // SMTP account password
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
$mail->AddAddress('whoto@otherdomain.com', 'John Doe');
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; //     optional - MsgHTML will create an alternate automatically
$mail->MsgHTML(file_get_contents('contents.html'));
$mail->AddAttachment('images/phpmailer.gif');      // attachment
$mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
$mail->Send();

【问题讨论】:

  • $mailer->Address($emailAddress);如果 $emailAddress = "email@email.com"; 应该可以工作您是否尝试在 $mailer->AddAddress($emailAddress); 附近的代码中回显 $emailAddess? ?你能告诉我们什么“不起作用”吗?
  • 我做了回声然后页面崩溃了。我还尝试过在带有单引号的 html 下拉列表中使用变量,然后在 $mailer 中调用变量,但这也不起作用。每次我使用除特定 ('email@email.com') 以外的任何内容时,我都会收到无效地址。
  • 我还尝试使用 ASCII 代码来调用单引号,这也会在值中生成 \。 '我没试过 ‘ ’不过,我现在就试试。

标签: php variables phpmailer


【解决方案1】:

试试strval($emailAddress),为我工作。

【讨论】:

    【解决方案2】:

    尝试做一个

    var_dump($emailAddress);
    

    就在->AddAddress() 通话之前,看看会发生什么。如果您在函数中执行此操作,则可能您没有将 $emailAddress 作为参数传递,忘记将其设为 global;

    同样,不要用双引号将电子邮件地址括起来。没必要:

    $emailAddress = 'email@email.com';  // correct
    $emailAddress = "email@email.com"; // correct
    $emailAddress = '"email@email.com"'; // incorrect
    $emailAddress = "\"email@email.com\""; // incorrect.
    

    【讨论】:

    • var_dump($emailAddress) - "email@email.com" 然后显示地址无效,我发现它需要单引号才能实际接受电子邮件为有效。这就是我的问题所在,因为如果我使用单引号,我将无法再使用该变量。
    • 确切的错误信息是什么?只有两个地方可以从phpmailer输出“无效地址”,一个私有方法(AddAnAddress())和一个公共方法SetFrom()
    【解决方案3】:

    如果 $emailAddress 来自 POST,请在值周围使用斜杠。

    确保选择框在标记中具有正确的值(检查您的视图源)。

    按照建议,回显变量以检查它。

    【讨论】:

    • 我将 POST 转换为全局会话,然后将其放入数组中。从那里我将 Session 调用到一个变量中,然后回显这些变量。当我得到回声时,它会恢复正常。当我尝试用斜线转义时,我在实际变量中得到了斜线。 \'email@email.com\'
    • 我有自己的邮件类。但是,它们基本上都在做同样的事情:构建一个标头,清理一些变量,然后调用 mail()。您可以编辑 $mail 类以回显收件人(mail() 的第一个参数)。
    【解决方案4】:

    我让它工作了,我的价值观有问题。

    实际上有一对。

    我们只是说一些拼写不正确。

    感谢您提供的所有信息!

    【讨论】:

      【解决方案5】:

      下面给出的代码非常适合我。

      $mail->AddAddress($_POST['email']); // 直接用 phpmailer 从 html 表单传递值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-27
        • 2020-09-01
        • 1970-01-01
        • 2013-04-13
        • 1970-01-01
        • 2016-08-26
        • 2021-09-13
        相关资源
        最近更新 更多