You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用smtp.js发送邮件时提示邮箱格式错误,求解决方案

解决SMTP.js中"The specified string is not in the form required for an e-mail address"错误

问题根源分析

这个错误核心是邮箱格式不合法,结合你的代码,重点排查以下几点:

  • From字段必须是完整合法的邮箱,不能填域名,且要和你ElasticEmail账号绑定的邮箱一致
  • Username字段需填写ElasticEmail的完整登录邮箱,不能用模糊的"my mail"占位
  • 拼接后的To邮箱可能存在空值、空格或非法字符,需要先做格式校验

修复后的代码

function sendEmail() {
    var elmail = document.getElementById('Email-Register-name').value.trim();
    var elmailw = document.getElementById('Email-Register-domain').value.trim();
    var toEmail = elmail + '@' + elmailw;
    var fromEmail = '你的ElasticEmail登录邮箱'; // 替换为实际邮箱
    var smtpUsername = '你的ElasticEmail登录邮箱'; // 替换为实际邮箱
    var smtpPassword = '你的ElasticEmail授权密码'; // 替换为实际授权密码

    // 邮箱格式校验规则
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (!emailRegex.test(toEmail)) {
        alert('请输入合法的收件人邮箱');
        return;
    }
    if (!emailRegex.test(fromEmail)) {
        alert('发件人邮箱格式错误');
        return;
    }

    console.log(toEmail);
    Email.send({
        Host: "smtp.elasticemail.com",
        Username: smtpUsername,
        Password: smtpPassword,
        To: toEmail,
        From: fromEmail,
        Subject: "Verification Email from tab the_dev",
        Body: "<html><h2>Header</h2><strong>Bold text</strong><br><em>Italic</em></html>"
    }).then(
        message => alert(message)
    ).catch(
        error => alert('发送失败:' + error)
    );
};

额外注意事项

  • ElasticEmail的SMTP密码不是账号登录密码,需要在后台生成授权密码,别混淆使用
  • 用trim()处理输入框值,避免首尾空格导致邮箱格式错误
  • 测试时可以先写死To和From的邮箱(比如自己的邮箱),排除前端输入问题后再动态获取值

内容的提问来源于stack exchange,提问作者tab the_dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:22:07