0

只是看看使用 Swift Mailer 从 Windows 服务器发送电子邮件。我有一个带有输入字段的简短表单,允许网络用户添加他们的电子邮件地址(id 是email),我需要能够将emailPHP 变量注入setToSwiftMailer 代码以允许将邮件发送到指定的电子邮件地址...有人知道怎么做吗?

基本代码是

// Set the To addresses with an associative array
->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))

我需要让它使用$email而不是receiver@domain.org

有任何想法吗?

4

3 回答 3

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 文档 - 处理表单

Swiftmail 创建消息文档

于 2013-07-19T14:20:27.263 回答
0

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

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

有趣的是,您可以将它与 一起使用name="email[]",在这里您可以简单地再次传递$_POST['email']tosetTo并完成!:)

$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));

祝你好运!

于 2013-07-19T14:28:01.327 回答
-1

谢谢大家-这种方法有效:

->setTo($email)
于 2013-07-19T14:41:28.710 回答