在 Unix 中使用 Java 发送多封邮件
Sending multiple mails with Java in Unix
如何在 Java 中 运行 使用运行时的 Unix 程序?
到目前为止,这就是我所拥有的。我的计划是改变收件人的邮件,这样我就可以 运行 在一个循环中与不同的收件人进行此操作。
Runtime run = Runtime.getRuntime();
Process mailx = run.exec("cat Docs/Mailmsgtmp.txt | mailx -s 'Subject' -r 'sender@mail.com' " + "reciever@mail.com");
不要使用 Runtime.exec()
,使用 ProcessBuilder
。哦,Java 还有用于发送邮件的库,所以你不需要使用外部命令...
无论如何,使用 ProcessBuilder
您可以轻松地重定向标准输入,这意味着在您的情况下您可以这样做:
// recipient is the email address of the... recipient
final ProcessBuilder pb = new ProcessBuilder("mailx", "-r",
"sender@foo.com", recipient);
final Path textToSend = Paths.get("Docs/mailtext.txt").toRealPath();
pb.redirectInput(textToSend.toFile());
// Also redirect stdout and stderr somewhere
final Process p = pb.start();
return p.waitFor();
将此代码放入一个方法中,为什么不可以是 Callable
并检查 return 代码。如果您想一次发送多封邮件,请使用 ExecutorService
。
有关如何使用纯 Java 发送电子邮件的许多链接,请参阅 here。
您应该考虑使用 Java 的内置邮件包 JavaMail。
来自 http://www.tutorialspoint.com/java/java_sending_email.htm 的简单示例:
// Recipient's email ID needs to be mentioned.
String to = "abcd@gmail.com";
// Sender's email ID needs to be mentioned
String from = "web@gmail.com";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);
try{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// Set Subject: header field
message.setSubject("This is the Subject Line!");
// Now set the actual message
message.setText("This is actual message");
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
}catch (MessagingException mex) {
mex.printStackTrace();
}
请参阅 https://java.net/projects/javamail/pages/Home 以获取大量文档。
如何在 Java 中 运行 使用运行时的 Unix 程序? 到目前为止,这就是我所拥有的。我的计划是改变收件人的邮件,这样我就可以 运行 在一个循环中与不同的收件人进行此操作。
Runtime run = Runtime.getRuntime();
Process mailx = run.exec("cat Docs/Mailmsgtmp.txt | mailx -s 'Subject' -r 'sender@mail.com' " + "reciever@mail.com");
不要使用 Runtime.exec()
,使用 ProcessBuilder
。哦,Java 还有用于发送邮件的库,所以你不需要使用外部命令...
无论如何,使用 ProcessBuilder
您可以轻松地重定向标准输入,这意味着在您的情况下您可以这样做:
// recipient is the email address of the... recipient
final ProcessBuilder pb = new ProcessBuilder("mailx", "-r",
"sender@foo.com", recipient);
final Path textToSend = Paths.get("Docs/mailtext.txt").toRealPath();
pb.redirectInput(textToSend.toFile());
// Also redirect stdout and stderr somewhere
final Process p = pb.start();
return p.waitFor();
将此代码放入一个方法中,为什么不可以是 Callable
并检查 return 代码。如果您想一次发送多封邮件,请使用 ExecutorService
。
有关如何使用纯 Java 发送电子邮件的许多链接,请参阅 here。
您应该考虑使用 Java 的内置邮件包 JavaMail。
来自 http://www.tutorialspoint.com/java/java_sending_email.htm 的简单示例:
// Recipient's email ID needs to be mentioned.
String to = "abcd@gmail.com";
// Sender's email ID needs to be mentioned
String from = "web@gmail.com";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);
try{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// Set Subject: header field
message.setSubject("This is the Subject Line!");
// Now set the actual message
message.setText("This is actual message");
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
}catch (MessagingException mex) {
mex.printStackTrace();
}
请参阅 https://java.net/projects/javamail/pages/Home 以获取大量文档。