需要在java项目上向用户发送电子邮件通知

时间:2011-12-06 03:46:31

标签: java email

所以我正在上课(班上所有的学生)项目(我不会控制服务器,安装东西等等。有没有办法发送电子邮件而不知道系统的项目将被部署?(我不会参与该过程,所以不像我可以在服务器上运行任何脚本) 我们正在研究Java,我们有Spring框架可以使用。 我可以使用预编译的jar吗? (我听到了一些不确定的事情)

我正在尝试使用javamail获取示例,但我无法在我的计算机上测试它..我启用了localhost并运行,但它不起作用,我找不到需要的教程我通过设置计算机和让代码工作的所有步骤[im on a mac])

4 个答案:

答案 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可能不赞成)更容易,并且可能在您的目标环境中工作,具体取决于网络的连接方式(防火墙,例如):

  1. 使用GMail等外部服务。使用JavaMail通过GMail发送邮件的Here's an example

  2. 使用ISP的邮件服务器。 JavaMail API有一个简单的例子,如果你download the whole package有很多例子(包括使用其他网络邮件提供商,如Windows Live Mail(又名Hotmail))。不要忘记查看the FAQ

  3. 如果您发现需要包含自己的邮件服务器,Rose India有一个JavaMail overview,其中包含该步骤。他们引用了企业级邮件服务器Apache James,这可能对您的需求有所帮助。

  4. 我建议先与你的导师一起解决这个问题......这可能会让你免得很多麻烦。

答案 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(您要发送电子邮件的邮件)。传递的属性和一些你想稍后改变的冗余代码......