我有以下java代码来创建与SMTP服务器的连接以发送电子邮件。如果“distList@mydomain.com”是单个接收器,它可以工作。但是,如果它是一个分发列表,就像我希望的那样,它就不会。
public static void main(String[] args){
SendEmail send = new SendEmail();
send.sendEmail();
}
private void sendEmail(){
try {
smtpSocket = new Socket(host, port);
os = new DataOutputStream(smtpSocket.getOutputStream());
is = new DataInputStream(smtpSocket.getInputStream());
if(smtpSocket != null && os != null && is != null)
{
try
{ os.writeBytes("HELO\r\n");
os.writeBytes("MAIL From: <mySender@mydomain.com>\r\n");
os.writeBytes("RCPT To: <distList@mydomain.com>\r\n");
os.writeBytes("DATA\r\n");
os.writeBytes("X-Mailer: Via Java\r\n");
os.writeBytes("DATE: " + dFormat.format(dDate) + "\r\n");
os.writeBytes("From: Me <mySender@mydomain.com>\r\n");
os.writeBytes("To: You <distList@mydomain.com>\r\n");
String sMessage = "This is the body of the message.";
os.writeBytes("Subject: Your subjectline here\r\n\r\n");
os.writeBytes(sMessage + "\r\n");
os.writeBytes("\r\n.\r\n");
os.writeBytes("QUIT\r\n");
String responseline;
while((responseline = is.readLine())!=null)
{
System.out.println(responseline);
if(responseline.indexOf("Ok") != -1)
break;
}
}
catch(Exception e)
{ System.out.println("Cannot send email as an error occurred."); }
}
}
catch(Exception e)
{ System.out.println("Host " + m_sHostName + " unknown"); }
}
}
无论是单个收件人还是所需的分发列表,服务器的响应都是相同的:
220 主机 Microsoft ESMTP MAIL服务已准备就绪 currentTimestamp
250 主持人您好[ myIP ]
250 2.1.0发件人确定
250 2.1.5收件人确定
354请开始输入邮件。
250邮件排队等待发送。
221关闭连接。再见。
有谁知道为什么我可以成功发送给一个人,而不是分发名单?