只是看看使用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
有什么想法吗?
答案 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脚本。
答案 1 :(得分:0)
你的意思是你有POST
或GET
从中输出用户在“电子邮件”字段中输入的电子邮件地址(例如: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)