top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_1087

メール送信:symfonyでSwiftMailer利用。思ったより時間かかったなぁ ・・・ 【symphonyで、創るぞ】

 2009-09-15
 引き続き・・・
 symfonyでのサイト開発ネタ。
 実践なので、真に必要な機能として・・・

 今回は
 ・メール送信 だ。
 ・その上で、「ありがとうございます」画面
  を表示。
  確認画面( confirm form )
  単純なはずだったんだけど、好事魔多し。
  ついいろいろ調べて回り道。
  半日要してしまった・・・


  追記に ▼


 ※今までのご参考

FC2ブログランキング にほんブログ村 IT技術ブログ Webサイト構築へ ブログ王ランキング 人気ブログランキング 人気ホームページランキングへ


more

************************************************
◎ symfony・Doctrineフォーム
   「メール送信」:symphonyで、創るぞ

************************************************


 最初に、
 通常PHPでメール送るときは
 ほぼコマンド決まっていて、

<?
mb_language("Japanese");
mb_internal_encoding("utf-8");
mb_send_mail('to@maiaccount', 'subject', 'body', "From: "."from@maiaccount"."\n");
?>
 だ。


 別にこれでいいのだろうけど・・・


 ■メール送信テスト
  まず正気の構文でメール送れるか、のテスト。


  と、
  いきなりここで はまり1.

  ・利用している VPSサーバーでの設定に
   非常に時間を要する。


  ・具体的には、最初どうもコマンドが受け付けられていないようだ。

   (調査)


   メールのログを見てみる。
   /usr/local/psa/var/log/maillog だ。該当するのは
Sep 15 15:17:18 ***** relaylock: /var/qmail/bin/relaylock: mail from ***.***.***.***:***** (*****)
 のようだな。
   relaylock? システム管理専門ではない私には
   初遭遇。

   (試行錯誤)


   いろいろ調べて、いろいろやって
   ■Outbound Port 25 Blocking 対策として、TCP 25番ポートの代わりに587番ポート(Submission Port)を使用
    > Outbound Port 25 Blocking 対策!
    > Pleskコントロールパネル
     ・「サーバ」>「メール」>「メッセージサブミッションを有効にする」
     ・/etc/xinetd.d/submission_psa 生成
     ・確認
# netstat -a | grep submission
tcp 0 0 *:submission *:* LISTEN

   ■【LINUX+PLESK】特定のドメイン名からメールの送信ができない(※他の会社のQAだけど)
    > SMTP用の証明書
    > 対処
# openssl ciphers > /var/qmail/control/tlsserverciphers
# openssl ciphers > /var/qmail/control/tlsclientciphers
    > リスタート(/etc/init.d/qmail restart
   ■【LINUX+PLESK】ident認証を待たずに送信する方法について(※これも、他の会社のQA)
    > ident認証? /etc/xinetd.d/smtp_psa
    > 対処
server_args = -R /var/qmail/bin/relaylock ....
    > リスタート(/etc/rc.d/init.d/xinetd restart
   ■使えるネットでメール送信が出来ない件(※まさに、ここを利用)
    > sendmailの設定
    > 参照
     ・sendmail の設定

   (結果)
   送信可能には、なった。


 このままでも良かったんだけど、


 やはり、symfony習得中。
 symfonyでよく利用される、メールプラグインを
 試したい・・・と。

 ■jpMailPlugin


  これが、有名のようなので・・・

jpMailPlugin
jpMailPlugin symfony 1.2以降で動作するVer.0.1系



 利用しようとしたんだけど
 うまくゆかず・・・

   (試行錯誤)
   今更ですが・・・symfony1.0 では
   ■The symfony Cookbook Eメールを送信する(※symfony1.0)
    ・PHPMailer というプラグインを基にした
     ・sfMailクラス経由 が基本のようだったのが
    symfony1.2 では
   ■The symfony Cookbook Eメールを送信する方法(※symfony1.2)
    ・Swift Mailer というプラグインを基にした方法が新しい
 ようですね。


   (結局)
   新参・後発もののメリットとして、新しい方法
   をやってみよ。


 ■SwiftMailer


  上記、cookbook に従い、
$swift = new Swift(new Swift_Connection_NativeMail());
    という感じで利用。

  ここで実は、はまり2.


  最初は、Swift_Connection_NativeMail ではなく、
$swift = new Swift(new Swift_Connection_SMTP("smtpサーバー"));
 でやっていたのだけど、結局うまくゆかず。
  まぁ、ここは、「メール送ること」が目的なので
  これでいいか、と。

  アクションクラスでは、この
  ・メール送信部分は、いろいろと利用したかったので


   public で
  public function executeGoMail(sfWebRequest $request, $arguments = null)
{
if (is_null($arguments)) {
} elseif (!is_array($arguments)) {
} else {
$this->arguments = $arguments;

require_once "*****/swift/Swift.php";
require_once "*****/swift/Swift/Connection/SMTP.php";

try {
$swift = new Swift(new Swift_Connection_NativeMail());
$message = new Swift_Message(
$arguments['subject'],
mb_convert_encoding($arguments['body'], 'JIS', 'auto'),
'text/plain',
'7bit',
'iso-2022-jp'
);
$swift->send($message, $arguments['address'], $arguments['from']);
$swift->disconnect();
} catch (Swift_ConnectionException $e) {
echo "SMTPエラー: " . $e->getMessage();
} catch (Swift_Message_MimeException $e) {
echo "emailエラー:" . $e->getMessage();
}
}
}
 と用意しておき、
$arguments = Array();
$arguments['from'] = "***@*****";
$arguments['address'] = "***@*****";
$arguments['subject'] = "サブジェクト内容";
$arguments['body'] = "本文内容";
$this->executeGoMail($request, $arguments);
    と利用する。

 一応これで、実装完了。
 メール本文やサブジェクトをじっくり準備して
 OK! だ。


【他、勉強させられたサイト・ブログ】
 ・TCP_Wapperとxinetdによるサービスとアクセス制御
 ・Plesk サーバで標準のqmailシステムと一緒にpostfixも使いたい。。。
 ・[symfony]SwiftMailer 4 + Symfony 1.2 の初回設定
 ・symfonyでSwift Mailerを使用する際の注意点CommentsAdd Star


 いやはや、奥が深いな。今日はユーザータグ多いぞ。

commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/1087-65fca345
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。