swift Mailer - 设置为PHP变量

时间:2013-07-19 14:17:36

标签: php email swiftmailer

只是看看使用Swift Mailer从Windows服务器发送电子邮件。我有一个带有输入字段的简短表单,允许Web用户添加他们的电子邮件地址(id为email),我需要能够将email PHP变量注入{{1 SwiftMailer代码允许将邮件发送到指定的电子邮件地址......任何人都知道如何做到这一点?

基本代码

setTo

我需要使用// Set the To addresses with an associative array ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name')) 而不是$email

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您需要捕获已发布的值。

// Set the To addresses with an associative array
$email = $_POST['email'];
->setTo(array($email));

假设您的HTML类似于

<form method="post">
    Email: 
    <input type="text" name="email" id="email_id" />
</form>

请记住,name input属性是您希望使用PHP捕获的属性。 id未传递给您的PHP脚本。

PHP Documentation - Dealing with Forms

Swiftmail Creating Messages Documentation

答案 1 :(得分:0)

你的意思是你有POSTGET从中输出用户在“电子邮件”字段中输入的电子邮件地址(例如:name="email")?试试这个:

$mailer->setTo($_POST['email']);

有趣的是,您可以将其与name="email[]"一起使用,您可以简单地再次将$_POST['email']传递给setTo,您就完成了! :)

$mailer->setTo(array(
    'email-1@domain.tld' => 'Name 1',
    'email-2@domain.tld' => 'Name 2',
    'email-3@domain.tld' => 'Name 3',
    'email-4@domain.tld' => 'Name 4',
));

您还可以使用更多示例,例如将name="email[]"name="name[]"结合使用,如下所示:

$mailer->setTo(array_combine($_POST['email'], $_POST['name']));

请注意,要使array_combine起作用,您需要两个相同的长度数组。像这样保护您的代码(可以扩展以满足您的需求):

$emails =& $_POST['emails'];
$names =& $_POST['name'];

if (count($emails) > count($names)) {
    $emails = array_slice($emails, 0, count($names));
} 

else if (count($names) > count($emails)) {
    $names = array_slice($names, 0, count($emails));
}

$mailer->setTo(array_combine($emails, $names));
祝你好运!

答案 2 :(得分:-1)

谢谢你们 - 这个方法有效:

->setTo($email)