JBTALKS.CC

标题: Java 如何才能发送email?大大请进 [打印本页]

作者: lord14383    时间: 2009-6-17 08:25 PM
标题: Java 如何才能发送email?大大请进
到底问题出在哪里?
/*
Some SMTP servers require a username and password authentication before you
can use their Server for Sending mail. This is most common with couple
of ISP's who provide SMTP Address to Send Mail.
This Program gives any example on how to do SMTP Authentication
(User and Password verification)
This is a free source code and is provided as it is without any warranties and
it can be used in any your code for free.
Author : Sudhir Ancha
*/
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;
/*
  To use this program, change values for the following three constants,
    SMTP_HOST_NAME -- Has your SMTP Host Name
    SMTP_AUTH_USER -- Has your SMTP Authentication UserName
    SMTP_AUTH_PWD  -- Has your SMTP Authentication Password
  Next change values for fields
  emailMsgTxt  -- Message Text for the Email
  emailSubjectTxt  -- Subject for email
  emailFromAddress -- Email Address whose name will appears as "from" address
  Next change value for "emailList".
  This String array has List of all Email Addresses to Email Email needs to be sent to.

  Next to run the program, execute it as follows,
  SendMailUsingAuthentication authProg = new SendMailUsingAuthentication();
*/
public class SendMailUsingAuthentication
{
  private static final String SMTP_HOST_NAME = "smtp.gmail.com";
  private static final String SMTP_AUTH_USER = "xxxx@gmail.com";
  private static final String SMTP_AUTH_PWD  = "xxxxx";
  private static final String emailMsgTxt      = "Online Order Confirmation Message. Also include the Tracking Number.";
  private static final String emailSubjectTxt  = "Order Confirmation Subject";
  private static final String emailFromAddress = "xxx@streamyx.com";
  // Add List of Email address to who email needs to be sent to
  private static final String[] emailList = {"xxx@streamyx.com"};
  public static void main(String args[]) throws Exception
  {
    SendMailUsingAuthentication smtpMailSender = new SendMailUsingAuthentication();
    smtpMailSender.postMail( emailList, emailSubjectTxt, emailMsgTxt, emailFromAddress);
    System.out.println("Sucessfully Sent mail to All Users");
  }
  public void postMail( String recipients[ ], String subject,
                            String message , String from) throws MessagingException
  {
    boolean debug = false;
     //Set the host smtp address
     Properties props = new Properties();
     props.put("mail.smtp.host", "smtp.gmail.com");
     props.put("mail.smtp.auth", "true");
    Authenticator auth = new SMTPAuthenticator();
    Session session = Session.getDefaultInstance(props, auth);
    session.setDebug(debug);
    // create a message
    Message msg = new MimeMessage(session);
    // set the from and to address
    InternetAddress addressFrom = new InternetAddress(from);
    msg.setFrom(addressFrom);
    InternetAddress[] addressTo = new InternetAddress[recipients.length];
    for (int i = 0; i < recipients.length; i++)
    {
        addressTo = new InternetAddress(recipients);
    }
    msg.setRecipients(Message.RecipientType.TO, addressTo);

    // Setting the Subject and Content Type
    msg.setSubject(subject);
    msg.setContent(message, "text/plain");
    Transport.send(msg);
}

/**
* SimpleAuthenticator is used to do simple authentication
* when the SMTP server requires it.
*/
private class SMTPAuthenticator extends javax.mail.Authenticator
{
    public PasswordAuthentication getPasswordAuthentication()
    {
        String username = SMTP_AUTH_USER;
        String password = SMTP_AUTH_PWD;
        return new PasswordAuthentication(username, password);
    }
}
}


[ 本帖最后由 lord14383 于 2009-6-18 12:08 AM 编辑 ]
作者: Super-Tomato    时间: 2009-6-18 12:03 AM
這個 Free Source 里面不是说了要設定好你的 smtp 帳號和密碼才能使用嗎?
作者: lord14383    时间: 2009-6-18 12:09 AM
我试过了,可是还是不可以
作者: Super-Tomato    时间: 2009-6-18 12:51 AM
原帖由 lord14383 于 2009-6-18 12:09 AM 发表
我试过了,可是还是不可以


目前没辦法測試你的 coding, 假设都在正确的情況下,那么这個問題最主要的問題就在你的 smtp 连接上
到 google 确認你的 google smtp 连接方式看看是否有 SSL 設定等的要求,又或帳號不需要加上 @gmail.com




*p/s: 今早測試了, google smtp 必須使用 SSL 和指定 465 smtp port
http://mail.google.com/support/b ... en&answer=13287

[ 本帖最后由 Super-Tomato 于 2009-6-18 07:39 AM 编辑 ]




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5