1
public class SendMail {

  private class SMTPAuthenticator extends javax.mail.Authenticator 
  {

    @Override
    public PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication("userID", "pwd");
    }
  }

   public void sendMail() throws Exception {
   String strFromIds = "xyz@gmail.com";
   String strToIds = "xyz@domain.com";
   String strSubject = "Sample Mail Subject.";
   String strContent = "Sample Mail Content";
   Properties objProperties = System.getProperties();
   objProperties.put("mail.smtp.host", "<smtp host name>");
   objProperties.put("mail.smtp.port", "25");
   objProperties.put("mail.transport.protocol", "smtp");
   objProperties.put("mail.smtp.submitter", "<user id>");
   objProperties.put("mail.smtp.auth", true);
   objProperties.put("mail.debug", "true");
   Session objSMTPSession = Session.getDefaultInstance(objProperties, new  
                                                     SMTPAuthenticator());

   Message objMessage = new MimeMessage(objSMTPSession);
   objMessage.setFrom(new InternetAddress(strFromIds));
   InternetAddress[] objToAddress = new InternetAddress[1];     
   objToAddress[0] = new InternetAddress(strToIds);
   objMessage.setRecipients(Message.RecipientType.TO, objToAddress);

   objMessage.setSubject(strSubject);

   Multipart objMultiPart = new MimeMultipart();
   MimeBodyPart objBodyPart = new MimeBodyPart();

   objBodyPart.setText(strContent);
   objMultiPart.addBodyPart(objBodyPart);

   objMessage.setContent(objMultiPart);

   Date objSentDate = new Date();
   objMessage.setSentDate(objSentDate);
   Transport.send(objMessage);
    objMessage = null;
 }

 public static void main(String[] args) {
try {
    new SendMail().sendMail();
} catch (Exception ex) {
    System.out.println("Exception in main :: " + ex);
    }
 }
}

上記のコードを使用することで、gmail ID の認証詳細を指定せずに、GMail メール ID (例: xyz@gmail.com) のアドレスから gmail ユーザーにメールを送信できます。

ここで、smtp(会社のメールサーバー)サーバーのホスト名と、会社のメールサーバーのユーザーIDとpwd(smtpホストとして指定)を指定しました...

これらで、私はGMailユーザーとしてメールを送信しています,,

しかし、なぜ GMAIL はこの種のメールを受け付けているのでしょうか。

4

2 に答える 2

6

スパムがある理由を発見しました。:-)

会社のメール サーバーを介してメッセージを送信しています。会社のメール サーバーは、使用している From アドレスがメール サーバーで有効かどうかを確認していないようです。そのため、会社のアドレスの代わりに Gmail アドレスを使用できます。いいえ、問題がないかどうかを確認するために Gmail をチェックしません。

于 2013-01-28T19:55:58.027 に答える
0

Gmail は、認証なしではメールを送信できません。

間違った資格情報で認証することはできません。つまり、パスワードを持っている場合 (gmail ではパスワードが必要な場合)、パスワードを送信しないとログインできないため、何も送信できません。

一般的に、確かにできます。具体的なコード例では、匿名送信を許可しない GMail を使用しています。

彼らの参照から:

smtp.gmail.com (認証を使用) 認証を使用: はい TLS/STARTTLS のポート: 587 SSL のポート: 465

あなたのキャッチ句に関する追加のコメント:

私の意見では、あなたは例外の考え方を大いに誤用しています。より良いアプローチは次のようになります。

catch(Exception x)
 {
var s = x.Message;
if ( x.InnerException!=null )
{
    s += Environment.NewLine + x.InnerException.Message;
}

MessageBox.Show(s);
}
于 2013-01-28T09:57:40.617 に答える