パッケージcom.chuanglan。 輸入org.apache.logging.log4j.LogManager。 輸入org.apache.logging.log4j.Logger。 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.stereotype.Component。 輸入java.util.Date; 輸入java.util.Properties; 輸入はjavax.activation.DataHandler; 輸入javax.activation.DataSource。 輸入javax.activation.FileDataSource。 輸入javax.mail.BodyPart。 輸入javax.mail.Multipart。 インポートのjavax.mail.Session。 輸入javax.mail.Transport。 輸入javax.mail.internet.InternetAddress。 輸入javax.mail.internet.MimeBodyPart。 輸入javax.mail.internet.MimeMessageの。 輸入javax.mail.internet.MimeMultipart。 輸入javax.mail.internet.MimeUtility。 @Component パブリック クラスEmailClient { プライベート 静的 最終ロガーロガー= LogManager.getLogger(EmailClient。クラス)。 @Autowired プライベートEmailClientInfo CLIENTINFO。 / ** * * @paramの情報邮件信息 * @return 返回 *@throws 例外例外 * / パブリック ブール送信(MailInfo情報)スロー例外{ logger.info(CLIENTINFOを); // 1.メールサーバーの設定と接続するためのパラメータ、パラメータを作成し 、プロパティの小道具= 新しい新 ;プロパティ() // パラメータ構成 props.setProperty( "mail.transport.protocol"、 "SMTP"); // プロトコル(JavaMailの仕様)を用い props.setProperty( "mail.smtp.host"、clientInfo.getSmtpHostを()); // 送信しますSMTPサーバーのアドレスのメールボックスのメンバー (「真の」「mail.smtp.auth」)props.setPropertyを; // 認証を要求する必要 // 2.構成に応じてセッションオブジェクトを作成し、そして、メールサーバとの対話のために =セッションセッションSession.getInstance(小道具); session.setDebug(真の); // デバッグモードに設定され、あなたが詳細な送信ログを表示することができます 。// 3.メッセージの作成 で、MimeMessageメッセージ= createMimeMessage(セッション、情報を); // 4.セッションがGetメッセージ転送オブジェクト 輸送輸送= Session.getTransport(); // 、メールボックスが、送信者のメールボックスに認証メッセージと一致していなければならないところ5.メールボックスアカウントとパスワードがメールサーバーに接続するために、それ以外の場合はエラーを // / / PS_01:サーバーに失敗した接続した場合、失敗のコンソールログの理由で、このように対応する出力を成功への鍵を決定する // 慎重失敗の理由を確認し、いくつかのメールサーバがエラーコードを返すか、リンクの間違った種類を見て、によるとアウトエラー // 失敗の特定の理由を表示するサイトを助けるために、適切なメールサーバに入力します。 // // PS_02:接続障害が通常である理由は、次の点を慎重にコードをチェック: // (1)SMTPメールサービスをオンにしません。 // (2)メールボックスのパスワードが間違っている、例えば、一部のメールボックスを開いた独立したパスワード; / / (3)メールボックスサーバーがSSLの安全な接続を使用する必要があります必要とします。 // (4)要求頻度が高すぎるか、他の理由のために、サービスのメールサーバーを拒否され; // (5)上記の点が正しければ、メールサーバがサイトを見つけるために決定するために助けます。 // // PS_03:ログ読んで、よく見てログを取り、ログ慎重に見て、エラーの理由がログに記載されています。 transport.connect(clientInfo.getSenderAddress()、clientInfo.getPasswordは()); // メッセージオブジェクトを作成するとき6.すべての受信者アドレスに送信されたメッセージを、送信、message.getAllRecipientsは()の収入が追加され、すべて取得します人のメンバー、CC、Bccの transport.sendMessage(メッセージ、message.getAllRecipients()); // 7.近い接続 transport.close(); を返す trueに; } / ** 簡易メールは*テキストのみが含まれている作成します * * @param セッションとサーバーの対話をセッション *が@return 返す *が@throws 例外異常 * / // パブリック静的で、MimeMessage createMimeMessage(セッションセッション、sendmailの文字列、文字列receiveMailは)例外{スロー 公共のMimeMessage createMimeMessage(セッションセッション、MailInfo情報)がスロー例外{ // 1.作成しますメール メッセージ=で、MimeMessage 新しい新で、MimeMessage(セッション); // 2.投稿者:送信者(ニックネーム広告容疑者、広告が失敗を返しジャンクメールサーバと間違えているだけでなく、回避するために、ニックネームを変更) message.setFrom(新新たInternetAddress(CLIENTINFO .getSenderAddress()、clientInfo.getSenderName()、 "UTF-8" )); // 3.宛先:(複数の受信者を増加させることができ、CC、BCC)に message.setRecipient(MimeMessage.RecipientType .TO、新しい新たInternetAddress(info.getRecipientAddress()、info.getRecipientName()、 "UTF-8" )); // 4.件名:メッセージの件名(タイトル広告容疑者、メールサーバーがスパムのために誤解されないようにします同様に返すために障害など、)タイトルを変更してください message.setSubject(info.getSubject()、「UTF-8」); // 5.内容:メッセージのボディ(あなたがhtmlタグを使用することができます)(コンテンツ広告の容疑者、メールサーバは間違えを避けるためそのスパムと見なさも返すことができなかった、修正内容を送ってください) message.setContent(info.getContent()、 "テキスト/ HTML;のcharset = UTF-8" ); // 6.設定時間差出人 message.setSentDate(新しい新しい日付()); IF(info.getFile()=!NULL ){ マルチマルチ = 新しい新規のMimeMultipart(); のBodyPartパート = 新しい新規のMimeBodyPart(); // ソースのファイル名に基づいてデータを取得する データソースデータソース= 新しい新しいザFileDataSource(info.getFile()); のdataHandlerのdataHandler = 新しい新規のdataHandler(データソース); / / 添付ファイル自体とのBodyPartに与えます part.setDataHandler(のdataHandler); // のBodyPartに同じのファイル名を取得 part.setFileName(MimeUtility.encodeText(dataSource.getName())); multipart.addBodyPart(パート); message.setContent(マルチパート); } // 7。設定の保存 message.saveChangesを(); を返すメッセージを。 } }