ドコモで添付ファイル削除

2008/09/26 未分類 spok

ドコモ(docomo)で添付ファイル削除

ドコモにデコメや添付ファイル付きメールを送信した場合、「添付ファイル削除」となってしまう場合があります。
原因のひとつとしてお使いのSMTP送信サーバーとドコモのサーバーがSMTPコネクションを上手に終了できないことがあるようです。

回避方法

mail()関数を使わずに、SMTP送信にて試行してみてください。
この場合のSMTPサーバーは一般のプロバイダを指定し、SMTP AUTH認証にて接続するのがいいと思います。
(要:Qdsmtp

ヘッダーが見えてしまう等

2008/09/26 未分類 spok

本文が消えてしまう。携帯でうまく受信できない。ヘッダーが見えてしまう

改行コードの変更
Qdmailでは、RFCに従い、ヘッダーの改行コードをCRLFとしています。
しかし、sendmailではないメール送信サーバー、特にqmailを使用している場合、改行コードがCRLFではなくLFのみでないと誤動作することがあるようです。
0.8.6.a以降のバージョンで、自動認識を装備していますが、当該自動認識がうまく働かない場合もあるかと思います。
その場合は、強制的に改行コードをLFのみにするように変更してみてください。
変更の仕方
ソースコードの50行目付近に、Line Feedの項目があり、var $LFC = ”¥r¥n”と定義している行があります。
ソース内を「$LFC」で検索してみてください。
それを半角で”¥n”と変更してみてください。¥rを削除するということです。
逆変更
Qdmailが、送信サーバーがqmailであると自動判別したけれども、それが逆効果になってしまう場合は、qmail判定した時であっても、CRLFにしておくことが必要になります。
上記のvar $LFC の定義の1行下に、var $LFC_Qmailの設定があります。これを半角で”¥r¥n”に変更してみてください。
ユーザーのソースコード内での改行コードの変更
$mail には Qdmailオブジェクト(インスタンス)が入っているものとします。
$mail -> lineFeed( ”¥n” ); //(実際は半角にて)
とすると、上記のようにQdmailのソースコードを変更しなくても、ユーザースクリプトサイドで、強制的に改行コードをLFのみにできます。CRLFに再変更するには、
$mail -> lineFeed( ”¥r¥n” );
としてください。
現在の改行コードを得るには、
$mail -> lineFeed();
と引数を省略すれば、返り値で現在の改行コードを返します。

なぜかテキストが文字化けする

mb_language('ja');
mb_internal_encoding('UTF-8');
UTF-8は例示ですので、お使いの文字コードにしてください。

または
php.ini にて
mbstring.language = Japanese
を設定してみてください。

文字コード統一

2008/09/26 未分類 spok
Qdmailは、あらゆる環境で文字化けゼロを目指すメールライブラリですが、その様々な状況に対応するために、多くの場所で文字コードの自動検出を行っています。
ところが、この文字コード自動検出は、完璧にすることが難しいため、かえって問題を起こすことがあります。
例えば、UTF-8に文字コードを統一しているはずなのに、自動検出でSJISと認定されてしまうようなことです。
1.1.3b以降では、この自動検出機能を停止し、すべて統一文字コードでオペレーションを行うという宣言を用意しました。

例)すべてUTF-8で統一している場合。
$mail -> unitedCharset( 'UTF-8' );
これで、すべての自動検出ルーチンで、強制的にUTF-8と認識させることができます。

CodeIgniterで日本語メール送信

2008/09/25 未分類 spok
CIことCodeIgniterでもQdmailを利用して簡単に日本語メールを送信することができます。(CodeIgniter1.6.3にて動作確認)
携帯デコメもOK
include('qdmail.php');

class Mail extends Controller {
    function sendmail(){
        $data = array('hello'=>'こんにちは');
        $content=$this->load->view('mailview',$data,true);
       qd_send_mail('html','address@example.com','件名',$content,'from@example.com');
     }
}
$this->load->view メソッドの第3引数をtrueにするのがポイントです。
これで、$this->load->viewは画面に返すのでなく、画面に書くべき内容を返り値として渡してくれます。

Symfonyで日本語メール送信(携帯デコメもOK)

2008/09/25 未分類 spok
Qdmailでは、1.1.3bよりSymfony対応となりました。
SYmfonyで簡単に携帯デコメ、添付ファイル、HTMLメールなど多彩なメールを送信することができます。

2つの送信方法

Symfonyでメールを送信する方法は大きく2つあります。(Symfony1.1.2にて動作確認)

1 ビューに送信を任す方法
2 コントローラーで送信する方法

いずれにせよ、何らかの形で、qdmail.phpをインクルードしてください。
また、それぞれのコントローラーに対応するビューも用意してください。

1 ビューに送信を任す方法

include('qdmail.php');

class mymoduleActions extends sfActions
{
  public function executeSendEmail()
  {
	$this->sendEmail('mymodule', 'SendQd');  
  }
  public function executeSendQd()
  {
	$mail = new sfQdmail();

	$mail -> addAddress('address@example.com','日本語宛先');
	$mail -> setFrom('from@example.com','日本語フロム');
	$mail -> setSubject('test Symfony');
	$mail -> setMailer('mail');

	$this->mail = $mail;

	$this->mytext = 'Text example';
  }
}
この方式の場合、$mail->send()をつけてはいけませんので、注意してください。
だって、ビューに送信をお任せするわけですから。
SendQdに対応するテンプレートをご用意下さい。それがメール本文となります。

使い方は、sfMailと全く同じです。(いくつか使えないメソッドはありますが)

なお、以下のコンフィグファイルに、デフォルト設定が入っています。
sf_sandbox\data\symfony\config\mailer.yml
default:
  deliver:           on
  mailer:            mail
  domain:            localhost.localdomain
  hostname:          localhost
  port:              25
  username:          ''
  password:          ''

  wordwrap:          80

  .headers:
    priority:        3
    content_type:    text/plain
    charset:         utf-8
    encoding:        8bit

2 コントローラーで送信する方法

include('qdmail.php');

class mymoduleActions extends sfActions
  public function executeSendEmail()
  {
	$mail = new sfQdmail();
	$mail -> addAddress('address@example.com','日本語宛先');
	$mail -> setFrom('from@example.com','日本語フロム');
	$mail -> setSubject('test Symfony');
	$mail -> setMailer('sendmail');

	$content = $this->getPresentationFor('mymodule','content');
	$mail -> html($content);

	$mail -> send();
  }

  public function executeContent()
  {
	$this->mytext = 'Text example';
  }
}
この方式の場合は、 ->send()が必要です。
なんせ、コントローラーが送信する方法ですから。