我想向指定收件人发送一封邮件,但我的发件人可以拥有不同的邮件帐户,例如outlook或ymail或gmail。 是否可以将来自不同电子邮件ID的电子邮件发送给同一收件人?我使用此代码:
try
{final String from=request.getParameter("from");String smtpServ="",port="";final String pass=request.getParameter("pass");String to=request.getParameter("to");String subject=request.getParameter("subject");String body=request.getParameter("msg");if(from.contains("@gmail.com")){smtpServ="smtp.gmail.com";port="465";}else if(from.contains("@outlook.com") || from.contains("@hotmail.com")){smtpServ="smtp.live.com";port="587";}else if(from.contains("@ymail.com") || from.contains("@yahoo.com") || from.contains("@rocketmail.com") || from.contains("@yahoo.in")){smtpServ="smtp.mail.yahoo.com";port="465";}Properties props = System.getProperties();
// -- Attaching to default Session, or we could start a new one --
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host",smtpServ);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", port);
Session session1 = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from,pass);
}
});Message message = new MimeMessage(session1);message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
message.setSubject(subject);
message.setText(body);
// -- Set some other header information --
message.setHeader("MyMail", "Java Mail Test");
message.setSentDate(new Date());Transport.send(message);System.out.println("Message sent to"+to+" OK."); }
catch (Exception ex)
{ ex.printStackTrace();System.out.println("Exception "+ex); }
答案 0 :(得分:1)
通过Java发送邮件(使用Java Mail API)要求您设置一个SMTP主机,该主机会在正确的登录验证后将您的电子邮件发送给收件人。我已将Java Mail与Gmail ID和Gmail用作SMTP主机服务器。某些电子邮件服务提供商不允许从他们自己的Web服务之外发送电子邮件(使其与Java Mail不兼容)。
但是,为了支持多个发件人,您需要执行以下操作:
我的建议是在程序最初运行时存储这些发件人电子邮件ID和密码(以及SMTP主机),然后针对每个电子邮件ID和密码对迭代上述步骤以及所需的更改。
警告:
在我看来最好坚持使用单个发件人其他,具有相似内容的多封邮件,可以通过不同的发件人地址,标记为垃圾邮件由收件人电子邮件服务提供商。
答案 1 :(得分:0)
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
用
替换这个东西message.setRecipients(Message.RecipientType.TO, Address[] addresses);
[N.B.-地址是您想要的ID。]