从包含多个电子邮件的字符串中提取电子邮件?

时间:2020-01-25 03:09:49

标签: reactjs

我创建了一个具有emailsubjectmessage输入字段的组件。我的目标是添加电子邮件并将其发送给多个收件人,并以逗号分隔。但这不起作用。

在控制台中,我可以看到它将多个收件人合并为一个字符串,例如

"abc@yahoo.com, ert@gmail.com, werty@yahoo.com"

但是我希望以这种方式格式化字符串

"abc@yahoo.com", "ert@gmail.com", "werty@yahoo.com"

例如:我想向3个收件人发送电子邮件: abc@yahoo.comert@gmail.comwerty@yahoo.com

任何人都可以帮助我。预先感谢

1 个答案:

答案 0 :(得分:1)

您要解决的问题是,您有一个emailsubjectmessage字段,用户输入数据以发送主题为subject的电子邮件,邮件message发送到email字段中提供的所有电子邮件。

有多种方法可以解决此问题,具体取决于您格式化email字段的用户输入的格式。 最简单的方式是接受用空格分隔的电子邮件。例如。如果用户需要将电子邮件发送到3封电子邮件abc@abc.combcd@bcd.comcde@cde.com中,则可以将它们全部接受为一个字符串,其中每个电子邮件均用空格分隔。

"abc@abc.com bcd@bcd.com cde@cde.com"

现在,您只需调用email

就可以提取email.split(" ")字符串中的所有电子邮件。
const email = "abc@abc.com bcd@bcd.com cde@cde.com";
const emails = email.split(" ");

console.log(emails);
// ["abc@abc.com","bcd@bcd.com","cde@cde.com"]

因此,您修改后的handleSubmit方法将是这样

handleSubmit = e => {
    e.preventDefault();
    const { email, subject, message } = this.state;
    const email_list = email.split(" ");
    const data = {
      email: email_list,
      subject,
      message
    };

    axios
      .post(`/api/email`, data, {
        headers: { "Content-Type": "application/json" }
      })
      .then(res => {
        console.log(res);
        console.log(res.data);
      })
      .catch(err => {
        console.log(err);
      });
  };

您还需要像这样更改changeHandle方法

changeHandle = e => this.setState({[e.target.name]: e.target.value });

这是接受多封电子邮件的最简单方法。您可以设计任何适合您的应用程序的方法。上述方法可能是我能想到的最直接的方法。如果您需要进一步的澄清,请随时发表评论