从一组不确定的电子邮件中随机选择三封电子邮件

Posted

技术标签:

【中文标题】从一组不确定的电子邮件中随机选择三封电子邮件【英文标题】:Choose three emails at random from an indefinite group of emails 【发布时间】:2022-01-21 09:32:50 【问题描述】:

第一次写到这里,如有错误请见谅。 我不是程序员,我通常会尝试研究您在此站点上提供的建议并找到将其应用于我的需求的方法,但这次我找不到解决方案。 我为 wordpress 使用了一个电子邮件插件,它允许我在“密件抄送”字段中放置一个类似 [emails-group] 的标签,这个标签可以包含一个或多个用逗号分隔的电子邮件地址。 使用我在下面编写的代码(我不知道它是否以最好的方式编写)当电子邮件地址为三个时,我可以向两个随机电子邮件地址发送电子邮件。 (此代码在我的测试中有效)

add_filter( 'wpcf7_mail_tag_replaced',
  function( $replaced, $submitted, $html, $mail_tag ) 
    if ( 'emails-group' == $mail_tag->field_name() ) 
    foreach($submitted as $value)
        $expl = explode(",", $value);
        $list = array("$expl[0]","$expl[1]","$expl[2]");
        $rand_keys = array_rand($list, 2);
        $first = $list[$rand_keys[0]];
        $second = $list[$rand_keys[1]];
         $result = array("$first","$second");
    $replaced = implode(",",$result);
    
    
    return $replaced;
  ,
   10, 4
);

我需要的是一个新代码:

如果电子邮件地址是一两个或三个,则向每个人发送电子邮件,但如果电子邮件地址超过三个,则仅随机选择三个电子邮件地址并向他们发送电子邮件。

我感谢任何能让我找到解决方案的正确方法的人。 你好, 拉斐尔。

【问题讨论】:

参见docs for array_rand, second parameter:“num,指定应该选取多少个条目。”因此,从电子邮件地址列表中选择 3 个随机值应该不是问题。 谢谢你的回答,是的,我知道我可以写 $rand_keys = array_rand($list, 3);然后 $first = $list[$rand_keys[0]]; $second = $list[$rand_keys[1]]; $third= $list[$rand_keys[2]];但是我可以在变量 $list 中写入什么? 我认为我的问题是我不知道如何使 $list = array( 可以从 $expl 派生的所有元素) 在那些文档中(参见前面的评论)是(在 Returned values 下):“...否则,将返回随机条目的键数组” 【参考方案1】:

变量$expl 似乎有一个所有电子邮件地址的列表。

试试:

$list = $expl;
$rand_keys = array_rand($list, 3);
$first = $list[$rand_keys[0]];
$second = $list[$rand_keys[1]];
$third = $list[$rand_keys[1]];

【讨论】:

非常感谢,当我尝试仅使用 $expl 时,我的错误是 $list=array($expl)。这是因为我确定我需要写“array”,因为我在写 array("$expl[0]","$expl[1]","$expl[2]");你的解决方案很完美,我做了很多尝试,它有效。下面的代码只有在email地址超过三个的情况下才有效,这个我也试过很多次,你觉得写对了吗?【参考方案2】:

对我有用的最终代码是:

add_filter( 'wpcf7_mail_tag_replaced',
      function( $replaced, $submitted, $html, $mail_tag ) 
        if ( 'emails-group' == $mail_tag->field_name() ) 
        foreach($submitted as $value)
            $expl = explode(",", $value);
            if (count($expl) >= 3)
            $list = $expl;
            $rand_keys = array_rand($list, 3);
            $first = $list[$rand_keys[0]];
            $second = $list[$rand_keys[1]];
            $third = $list[$rand_keys[2]];
             $result = array("$first","$second","$third");
        $replaced = implode(",",$result);
         else 
                $replaced = $value;
            
            
        
        return $replaced;
      ,
       10, 4
    );

非常感谢 Luuk 的到来。 你让我的星期天变得更好

【讨论】:

以上是关于从一组不确定的电子邮件中随机选择三封电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:仅当不在另一张表中时才从一张表中选择电子邮件?

如何确定Outlook拖放期间拖动的附件

从 Outlook 检索电子邮件的脚本

电子邮件传输的协议是啥?

少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(选择题)2021-9

android 邮件服务器,全球邮企业邮箱Android(安卓)系统手机 POP3 IMAP协议设置方法