通过谷歌向多个收件人发送电子邮件
本文关键字:收件人 电子邮件 谷歌 | 更新日期: 2023-09-27 18:36:16
我正在做一个C#项目,在那里我正在构建自己的SMTP服务器。它基本上可以工作,但是我现在正在尝试发送多个收件人,但是我收到错误。
我正在从发件人域获取 MX 记录,然后我使用 MX 记录尝试向多个收件人发送电子邮件。如果我使用同一域执行两个收件人,则工作正常,如果两个收件人具有不同的域,则会收到以下响应:
Failed to send email. General Exception: Error in processing. The server response was: 4.3.0 Multiple destination domains per transaction is unsupported. Please
please
之后什么都没有,这就是响应的结束。
以下是我获得MX记录的方式:
string[] mxRecords = mxLookup.getMXRecords(Classes.CommonTasks.getDomainFromEmail(domain));
public string[] getMXRecords(string domain)
{
DnsLite dl = new DnsLite(library);
ArrayList dnsServers = getDnsServers();
dl.setDnsServers(dnsServers);
ArrayList results = null;
string[] retVal = null;
results = dl.getMXRecords(domain);
if (results != null)
{
retVal = new string[results.Count];
int counter = 0;
foreach (MXRecord mx in results)
{
retVal[counter] = mx.exchange.ToString();
counter++;
}
}
return retVal;
}
以下是我发送电子邮件的方式。
if (mxRecords != null)
{
MailMessage composedMail = new MailMessage();
composedMail.From = new MailAddress(message.EmailFromAddress);
//MailAddressCollection test = new MailAddressCollection();
//composedMail.To = test;
composedMail = addRecipientsToEmail(composedMail, message.emailRecipients);
composedMail.Subject = message.subject;
composedMail.Body = message.EmailBody;
if (message.contentType.ToString().Contains("text/html"))
{
composedMail.IsBodyHtml = true;
}
SmtpClient smtp = new SmtpClient(mxRecords[0]);
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Port = 25;
if (Configuration.emailConfig.useSmtpMaxIdleTime)
{
smtp.ServicePoint.MaxIdleTime = 1;
}
library.logging(methodInfo, string.Format("Sending email via MX Record: {0}", mxRecords[0]));
smtp.Send(composedMail);
updateEmailStatus(message.emailID, EmailStatus.Sent);
library.logging(methodInfo, string.Format("Successfully sent email ID: {0}", message.emailID));
}
else
{
string error = string.Format("No MX Record found for domain: {0}", domain);
library.logging(methodInfo, error);
library.setAlarm(error, CommonTasks.AlarmStatus.Warning, methodInfo);
}
这看起来好像是Google限制完成的事情,但是除了为每个收件人分别发送电子邮件之外,我
找不到解决方法。如果它有任何用处,这两个域就是谷歌应用域。
感谢您提供的任何帮助。
看来你并不孤单。看看这个。
:
"根据我的调查和研究,我相信正在发生的事情是你的系统直接连接到交付服务器(aspmx.l.google.com)。由于这是传递服务器,因此它不允许:
-
递送到未在 Google 上配置的帐号(即未经身份验证的中继)。
-
传递到同一 SMTP 会话中的多个不同域。
第二个对我们来说很重要。截至本月初(2012 年 5 月),我们的服务器设置进行了调整,这意味着我们的递送服务器严格执行不允许多域规则。有两种方法可以解决这个问题。第一种是在单独的 smtp 会话上发送到单独的域,第二种是使用 smtp.gmail.com 代替 aspmx.l.google.com。
http://productforums.google.com/forum/#!topic/apps/jEUrvTd1S_w
正弦 您可以通过谷歌向单个收件人发送电子邮件 您的问题不在于解决 mx 记录。Mx 记录告诉 IP 地址,但不告诉该 IP 背后的服务的功能/行为。
您可以解决 mx 记录,到目前为止一切顺利。但是您不需要自己解析 mx,因为 smtp 客户端会在您的行为上解析它,只需提供主机名即可。但请注意,这是了解有关 DNS 的更多信息的绝佳练习。没有时间浪费:-)
据我所知,通过谷歌以您想要的方式发送邮件,您需要一个谷歌帐户。使用该帐户的凭据向 SMTP 服务器进行身份验证可以打开一个新的视角