Javamail 从 2 个 smtp 服务器发送邮件
Javamail send message from 2 smtp servers
我有问题需要帮助
在我的程序中,我需要发送一封邮件,而 smtp 服务器依赖于一个变量,
如果 var 为 1 则必须从 gmail 地址发送邮件
或者如果 var 是 2 邮件是从不同的 smtp 服务器发送的
我从两个帐户都使用 TLS,一切正常(如果仅从 1 个服务器发送)...但是当我尝试从两个服务器发送时(因为我的 var 更改取决于 1 到 2,或 2 到 1在执行过程中多次)我总是收到一个错误
这是我的代码:
public static void correo(String empresa, String[] dest, String archivo, String nom_arch){
String cuenta = "", asunto = "", pw = "", pto = "", server = "";
try
{
Properties props = new Properties();
if("1".equals(empresa)){
cuenta = "example@gmail.com";
asunto = "xxxxxxx";
pw = "password";
pto = "587";
server = "smtp.gmail.com";
}
else if ("2".equals(empresa)) {
cuenta = "example@server.com";
asunto = "yyyyyyy";
pw = "password";
pto = "25";
server = "smtpout.secureserver.net";
}
props.setProperty("mail.smtp.host", server);
props.setProperty("mail.smtp.port", pto);
props.setProperty("mail.smtp.user", cuenta);
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.starttls.enable", "true");
Session session = Session.getDefaultInstance(props,null);
BodyPart texto = new MimeBodyPart();
texto.setText("Some Text");
BodyPart adjuntoPDF = new MimeBodyPart();
adjuntoPDF.setDataHandler(new DataHandler(new FileDataSource(archivo+".pdf")));
adjuntoPDF.setFileName(nom_arch+".pdf");
MimeMultipart multiparte = new MimeMultipart();
multiparte.addBodyPart(texto);
multiparte.addBodyPart(adjuntoPDF);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(cuenta));
InternetAddress[] direcciones = new InternetAddress[dest.length];
for(int i=0; i<dest.length; i++){
direcciones[i] = new InternetAddress(dest[i]);
}
message.addRecipients(Message.RecipientType.TO,direcciones);
message.setSubject(asunto);
message.setContent(multiparte);
Transport t = session.getTransport("smtp");
t.connect(cuenta, pw);
t.sendMessage(message, message.getAllRecipients());
t.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
请参阅 common JavaMail mistakes 的 JavaMail FAQ 列表。将 Session.getDefaultInstance 更改为 Session.getInstance。
我有问题需要帮助
在我的程序中,我需要发送一封邮件,而 smtp 服务器依赖于一个变量, 如果 var 为 1 则必须从 gmail 地址发送邮件 或者如果 var 是 2 邮件是从不同的 smtp 服务器发送的
我从两个帐户都使用 TLS,一切正常(如果仅从 1 个服务器发送)...但是当我尝试从两个服务器发送时(因为我的 var 更改取决于 1 到 2,或 2 到 1在执行过程中多次)我总是收到一个错误
这是我的代码:
public static void correo(String empresa, String[] dest, String archivo, String nom_arch){
String cuenta = "", asunto = "", pw = "", pto = "", server = "";
try
{
Properties props = new Properties();
if("1".equals(empresa)){
cuenta = "example@gmail.com";
asunto = "xxxxxxx";
pw = "password";
pto = "587";
server = "smtp.gmail.com";
}
else if ("2".equals(empresa)) {
cuenta = "example@server.com";
asunto = "yyyyyyy";
pw = "password";
pto = "25";
server = "smtpout.secureserver.net";
}
props.setProperty("mail.smtp.host", server);
props.setProperty("mail.smtp.port", pto);
props.setProperty("mail.smtp.user", cuenta);
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.starttls.enable", "true");
Session session = Session.getDefaultInstance(props,null);
BodyPart texto = new MimeBodyPart();
texto.setText("Some Text");
BodyPart adjuntoPDF = new MimeBodyPart();
adjuntoPDF.setDataHandler(new DataHandler(new FileDataSource(archivo+".pdf")));
adjuntoPDF.setFileName(nom_arch+".pdf");
MimeMultipart multiparte = new MimeMultipart();
multiparte.addBodyPart(texto);
multiparte.addBodyPart(adjuntoPDF);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(cuenta));
InternetAddress[] direcciones = new InternetAddress[dest.length];
for(int i=0; i<dest.length; i++){
direcciones[i] = new InternetAddress(dest[i]);
}
message.addRecipients(Message.RecipientType.TO,direcciones);
message.setSubject(asunto);
message.setContent(multiparte);
Transport t = session.getTransport("smtp");
t.connect(cuenta, pw);
t.sendMessage(message, message.getAllRecipients());
t.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
请参阅 common JavaMail mistakes 的 JavaMail FAQ 列表。将 Session.getDefaultInstance 更改为 Session.getInstance。