2013-10-16 152 views
2

我使用下面的代码发送电子邮件:如何使用smtp服务器发送电子邮件与Java动态从地址电子邮件ID?

public static void main(String args[]) throws AddressException, MessagingException 
{ 
    SendMail javaEmail = new SendMail(); 
    javaEmail.setMailServerProperties(); 
    javaEmail.draftEmailMessage(); 
    javaEmail.sendEmail(); 
} 

private void setMailServerProperties() 
{ 
    Properties emailProperties = System.getProperties(); 
    emailProperties.put("mail.smtp.port", "586"); 
    emailProperties.put("mail.smtp.auth", "true"); 
    emailProperties.put("mail.smtp.starttls.enable", "true"); 
    mailSession = Session.getDefaultInstance(emailProperties, null); 
} 

private MimeMessage draftEmailMessage() throws AddressException, MessagingException 
{ 
    String[] toEmails = { "[email protected]" }; 
    String emailSubject = "Test email subject"; 
    String emailBody = "This is an email sent by http://www.howtodoinjava.com."; 
    MimeMessage emailMessage = new MimeMessage(mailSession); 
    /** 
    * Set the mail recipients 
    * */ 
    for (int i = 0; i < toEmails.length; i++) 
    { 
     emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmails[i])); 
    } 
    emailMessage.setSubject(emailSubject); 
    /** 
    * If sending HTML mail 
    * */ 
    emailMessage.setContent(emailBody, "text/html"); 
    /** 
    * If sending only text mail 
    * */ 
    //emailMessage.setText(emailBody);// for a text email 
    return emailMessage; 
} 

private void sendEmail() throws AddressException, MessagingException 
{ 
    /** 
    * Sender's credentials 
    * */ 
    String fromUser = "[email protected]"; 
    String fromUserEmailPassword = "*******"; 

    String emailHost = "smtp.gmail.com"; 
    Transport transport = mailSession.getTransport("smtp"); 
    transport.connect(emailHost, fromUser, fromUserEmailPassword); 
    /** 
    * Draft the message 
    * */ 
    MimeMessage emailMessage = draftEmailMessage(); 
    /** 
    * Send the mail 
    * */ 
    transport.sendMessage(emailMessage, emailMessage.getAllRecipients()); 
    transport.close(); 
    System.out.println("Email sent successfully."); 
} 

}

,我加入Java邮件jar文件project.In此行transport.connect(emailHost, fromUser, fromUserEmailPassword);我要设置密码。

但我想要的是从地址发送电子邮件是动态的。这意味着用户可以设置他们的电子邮件地址,并将用户输入的电子邮件ID中的电子邮件发送给某个电子邮件ID

+0

真的期待你的建议。提前感谢 –

回答

2

您可以在地址和发件人地址上设置MimeMessage。他们不一定是一样的。在你draftEmailMessage方法,添加类似:

emailMessage.setFrom(new InternetAddress(fromEmailAddress, fromName)); 
emailMessage.setSender(new InternetAddress(senderEmailAddress, senderName)); 

这里,fromEmailAddress & fromName是地址和名称,用户输入(名称是可选的)。

对应的senderEmailAdresssenderName是发件人的地址和名称。

相关问题