Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PHPRunner:电子邮件数组,无法对邮件进行个性化设置_Java_Php - Fatal编程技术网

Java PHPRunner:电子邮件数组,无法对邮件进行个性化设置

Java PHPRunner:电子邮件数组,无法对邮件进行个性化设置,java,php,Java,Php,我正在使用PHPRunner,我正在尝试创建一个按钮,通过个性化的身体信息向选定的用户发送电子邮件。我在PHPRunner支持页面中找到了一个示例,但它只包含一条硬编码消息,因此我正在尝试修改该示例 如果我只选择了一个用户,我成功地发送了带有个性化消息的电子邮件,但是如果我选择了多个用户,所有用户都将收到相同的消息 这就是我现在拥有的: $emails = array(); while( $data = $button->getNextSelectedRecord() ) { if( $d

我正在使用PHPRunner,我正在尝试创建一个按钮,通过个性化的身体信息向选定的用户发送电子邮件。我在PHPRunner支持页面中找到了一个示例,但它只包含一条硬编码消息,因此我正在尝试修改该示例

如果我只选择了一个用户,我成功地发送了带有个性化消息的电子邮件,但是如果我选择了多个用户,所有用户都将收到相同的消息

这就是我现在拥有的:

$emails = array();
while( $data = $button->getNextSelectedRecord() )
{
if( $data["EMAIL_FIELD"] )
$emails[] = $data["EMAIL_FIELD"];
$body = $data["MESSAGE_FIELD"];
}
// send the email
$email = implode(", ", $emails);
$subject = "";
$arr = runner_mail(array('to' => $email, 'subject' => $subject, 'body' => $body));

$result["txt"] = "Email were sent.";
// if error happened print a message on the web page
if( !$arr["mailed"] )
{
$errmsg = "Error happened: <br>";
$errmsg.= "File: " . $arr["errors"][0]["file"] . "<br>";
$errmsg.= "Line: " . $arr["errors"][0]["line"] . "<br>";
$errmsg.= "Description: " . $arr["errors"][0]["description"] . "<br>";
$result["txt"] = $errmsg;
}
我应该换什么?谢谢。

问题:

在foreach循环中,您将每个新电子邮件地址附加到一个变量:

$emails[] = $data["EMAIL_FIELD"];
在每次迭代中,您将为$body变量指定新值,以覆盖旧值:

$body = $data["MESSAGE_FIELD"];
因此,当您在while循环之外调用runner_mail一次时,您将从上一次迭代向所有收件人发送相同的正文,您使用while循环构建了一个包含所有收件人的数组

解决方案:

您需要为每个收件人调用runner_mail,因为收件人的正文不同。您可以通过将对runner_mail的调用移动到while循环中来实现:

while( $data = $button->getNextSelectedRecord() )
{
    // Send only if email field not empty
    if( $data["EMAIL_FIELD"] ) {
        // This no longer should be an array of emails
        $email = $data["EMAIL_FIELD"];
        $body = $data["MESSAGE_FIELD"];
        $subject = "";
        // Email will be sent for each record
        $arr = runner_mail(array('to' => $email, 'subject' => $subject, 'body' => $body));
    }
}

你能添加发送电子邮件的代码吗?对不起,我没有更多的代码。这只是我用来在PHPRunnerI中创建按钮的代码片段,我忘了问为什么这个问题的标题是Java。你能修改一下吗?这会让人困惑的。谢谢你的评论。很高兴。请记住,在这段代码中还有一些地方可以改进:第6行和第7行是多余的,因为您可以使用$data数组调用runner_mail,我还建议您不要发送主题为空的电子邮件。在这种情况下,我发送没有主题的电子邮件,因为电子邮件发送到我的sms提供商Esendex。在这里,电子邮件通过服务电子邮件转换为短信。对我来说,这是一种向客户发送个性化短信的简单方式。我知道几乎每个短信提供商都有API,但我不是程序员。非常感谢你的帮助。