所以我正在上课(班上所有的学生)项目(我不会控制服务器,安装东西等等。有没有办法发送电子邮件而不知道系统的项目将被部署?(我不会参与该过程,所以不像我可以在服务器上运行任何脚本) 我们正在研究Java,我们有Spring框架可以使用。 我可以使用预编译的jar吗? (我听到了一些不确定的事情)
我正在尝试使用javamail获取示例,但我无法在我的计算机上测试它..我启用了localhost并运行,但它不起作用,我找不到需要的教程我通过设置计算机和让代码工作的所有步骤[im on a mac])
答案 0 :(得分:1)
如果您想使用java邮件测试邮件功能,您可以使用gmail
等任何电子邮件提供商,因为它们提供SMTP邮件功能。
请确保您仅将其用于测试目的,因为使用批量邮件或发送超出配额的邮件可能会暂时停用您的帐户。
做些喜欢
String host = "smtp.gmail.com";
String from = "username";
String pass = "password";
Propertindexes props = System.getPropertindexes();
props.put("maindexl.smtp.starttls.enable", "true");
props.put("maindexl.smtp.host", host);
props.put("maindexl.smtp.user", from);
props.put("maindexl.smtp.password", pass);
props.put("maindexl.smtp.port", "587");
props.put("maindexl.smtp.auth", "true");
String[] to = {"to@gmaindexl.com"};
Sessindexon sessindexon = Sessindexon.getDefaultindexnstance(props, null);
MindexmeMessage message = new MindexmeMessage(sessindexon);
message.setFrom(new indexnternetAddress(from));
indexnternetAddress[] toAddress = new indexnternetAddress[to.length];
for( int index=0; index < to.length; index++ ) {
toAddress[index] = new indexnternetAddress(to[index]);
}
System.out.prindexntln(Message.RecindexpindexentType.TO);
for( int index=0; index < toAddress.length; index++) {
message.addRecindexpindexent(Message.RecindexpindexentType.TO, toAddress[index]);
}
message.setSubject("hello Maindexl");
message.setText("Hello");
Transport transport = sessindexon.getTransport("smtp");
transport.connect(host, from, pass);
transport.sendMessage(message, message.getAllRecindexpindexents());
transport.close();
虽然我没有测试过代码,但它应该被破坏
答案 1 :(得分:0)
您不需要电子邮件服务器发送电子邮件。
您是否查看了Apache Commons Email如何为您提供帮助?
http://commons.apache.org/email/
您可以使用自己的GMAIL帐户为非关键案例发送此类电子邮件。 :d
答案 2 :(得分:0)
你有没有和你的导师谈过这件事?看起来很奇怪你不会知道部署环境但是必须通过它发送邮件。尽管如此,有些解决方案比设置自己的邮件服务器(您的ISP可能不赞成)更容易,并且可能在您的目标环境中工作,具体取决于网络的连接方式(防火墙,例如):
使用GMail等外部服务。使用JavaMail通过GMail发送邮件的Here's an example。
使用ISP的邮件服务器。 JavaMail API有一个简单的例子,如果你download the whole package有很多例子(包括使用其他网络邮件提供商,如Windows Live Mail(又名Hotmail))。不要忘记查看the FAQ。
如果您发现需要包含自己的邮件服务器,Rose India有一个JavaMail overview,其中包含该步骤。他们引用了企业级邮件服务器Apache James,这可能对您的需求有所帮助。
我建议先与你的导师一起解决这个问题......这可能会让你免得很多麻烦。
答案 3 :(得分:0)
public static int enviarCorreo(int puerto,String serverPrograma, String mailPrograma, String passMailPrograma, String info, String subject, String emailDestinatario, String ubicacionAdjunto1, String ubicacionAdjunto2, String nomAdjunto1, String nomAdjunto2) {
int err=0;
boolean conArchAdjunto1=true;
boolean conArchAdjunto2=true;
if(ubicacionAdjunto1.equals("")){
conArchAdjunto1=false;
}
if(ubicacionAdjunto2.equals("")){
conArchAdjunto2=false;
}
try {
// obtaining the session, this configuration is for
// a gmail account
Properties props = new Properties();
props.put("mail.smtp.host", serverPrograma);
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.port", puerto);//587
props.setProperty("mail.smtp.user", mailPrograma);
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, null);
// session.setDebug(true);
// composing the text
BodyPart texto = new MimeBodyPart();
texto.setText(info);
// multipart for text and images
MimeMultipart multiParte = new MimeMultipart();
// composing the att
if (conArchAdjunto1) {
BodyPart adjunto1 = new MimeBodyPart();
adjunto1.setDataHandler(new DataHandler(new FileDataSource(ubicacionAdjunto1)));
adjunto1.setFileName(nomAdjunto1);
multiParte.addBodyPart(adjunto1);
}
if (conArchAdjunto2) {
BodyPart adjunto2 = new MimeBodyPart();
adjunto2.setDataHandler(new DataHandler(new FileDataSource(ubicacionAdjunto2)));
adjunto2.setFileName(nomAdjunto2);
multiParte.addBodyPart(adjunto2);
}
multiParte.addBodyPart(texto);
// composing mail, to, from, subject and
// content.
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(mailPrograma));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(
emailDestinatario));
message.setSubject(subject);
message.setContent(multiParte);
message.addRecipient(Message.RecipientType.BCC,
new InternetAddress(mailPrograma));
message.setSubject(subject);
message.setContent(multiParte);
// Se envia el correo.
Transport t = session.getTransport("smtp");
t.connect(mailPrograma, passMailPrograma);
t.sendMessage(message, message.getAllRecipients());
t.close();
log.info("Clase EnviarMail, metodo enviarCorreo: Mail sended");
} catch (Exception e) {
err=-1;
log.error("Clase EnviarMail, metodo enviarCorreo: " +e.getMessage());
}
return err;
}
我使用此代码并且工作正常,请记住导入 javax.mail ,另一个提示是可以在a中配置某些属性,如mailPrograma(您要发送电子邮件的邮件)。传递的属性和一些你想稍后改变的冗余代码......