どのように大量の電子メールのPHP を使って送信する

PHPでShortLikeAFoxで9月に、 2008年の19日に投稿

そうすれば、大量のメールを送信するか、すぐに複数の大量のメールを送信するように変更することができるプログラムを作成してほしい。 PHPはこれを簡単に行えます。 この例では私はあなたには、特定のメールを送信する電子メールアドレスのリストを表示していると見なします。 私もこのリストでは、データベース内に保持しているが、想定してこのコードを簡単にハードコードのいずれかまたは別のソースからの電子メールアドレス一覧のリストを使用するように調整される可能性がある。

< ? phpの

/ /最初は、メールアドレスの情報が含まれているデータベースに接続します。
$ユーザー= "ユーザー" ;
$ホスト= "ホスト" ;
$パスワード= "パスワード" ;
$データベース= "データベース" ;

( "Couldn’t connect to server" ); $ cxn ( $ ホスト、 $ユーザ$パスワード)または死ぬ= mysql_connect ( "サーバー " )接続できませんでした
mysql_select_db ( $データベース) ;

は、電子メールアドレスが含まれて/ /クエリのテーブル。 ここで自分のテーブル名を記入する...
$クエリ= "のSELECT * theEmailAddresses " ;
( mysql_error ($cxn)); $結果= するmysql_query ( $クエリ、 $ cxn )または( mysql_error ( $ cxn ) ) ;死ぬ
$ nrows = mysql_num_rows ( $結果) ;

/ /誰が送信者として識別れます。 あなたがここに望みをかけることはできますが、本当に多すぎてここでは、メールアドレスは、コントロールしない場所に倫理的ではない。
$ =から" 投稿者: me@mydomain.com " ;
/ /標準的な電子メールの件名
$件名= "何の新しいmydomain.com " ;
/ /メッセージ
$メッセージ= "こんにちは大切な友人

今mydomain.comでクッキーを販売している。 それをチェックアウトしてください!
よろしくお願い申し上げます。
メイン" ;

/ /我々はすでに、すべてのメールアドレスを照会している。 今では、メールを送信する必要がある
0 ; $i < $nrows; $i ++ ){= 0 ( $ ; $私< $ nrows ; $私+ + ) (

$行= mysql_fetch_assoc ( $結果) ;
抽出 ( $行) ;
/ /置換$メールアドレスの欄にはどんなメールと呼ばれています
$ 〜 = " $メール" ;
/ /各メールには、データベース内のメールを送信
場合( メール ( $ 〜 、 $件名、メッセージ$ 、 $から) ) (

/ /メールは正常に送信された名前を印刷します。 これだけでは、プログラムを凍結していないことを確認する使用しています。 理論的にはその名の印刷されて着実にストリームする必要があります>

);" $ 〜 エコー中<br/> " ) ;




? >

コードのこのビット( )関数は、 PHPのメールの利点活用できます これは非常に強力で機能を使用するように簡単です。 ことを覚えていると大きな力大きな責任だ。 悪については、この機能を使用しないことをお試しください。

手動で挿入する方法をユーザーには、 SMFのフォーラムにPHPを使う

SMFの( 簡単な機械フォーラム) 、 7月にShortLikeAFoxてPHPを28日、 2008年に投稿

この具体例1.1.5 SMFのです。 私は他のバージョンで動作することを保証することはできません。

だから、簡単な機械フォーラムソフトウェアを実行し、ユーザーが手動で入力するか? 大丈夫。 私はこの問題を非常に具体的だが、知っているのアイデアはここWordpressのフォーラムや他のデータベースなどのソフトウェアパッケージ駆動の他のタイプに適応させることができると説明した。 この操作を実行する前に、正確にどのようになる、シンプルなマシンを取る方法についてのフォーラムのユーザーの追跡を見てみよう。 は、 SMFのデータベースには、テーブルと呼ばれていますsmf_members 。 構造smf_membersこのようなものです:

競技場 種類 ヌル

債務不履行 エキストラ
ID_MEMBER はMEDIUMINT ( 8 )符号なし なし PRIに NULLを AUTO_INCREMENTの
memberName はvarchar ( 80 ) なし MUL
dateRegistered 内科( 10 )符号なし なし MUL 0
ポスト はMEDIUMINT ( 8 )符号なし なし MUL 0
ID_GROUP のsmallint ( 5 )符号なし なし MUL 0
lngfile tinytext なし MUL
lastLogin 内科( 10 )符号なし なし MUL 0
realnameの tinytext なし
instantMessages のsmallint ( 5 ) なし 0
unreadMessages のsmallint ( 5 ) なし 0
buddy_list テキスト なし
pm_ignore_list テキスト なし
messageLabels テキスト なし
passwdの はvarchar ( 64 ) なし
メールアドレス tinytext なし
personalText tinytext なし
はTINYINT ( 4 )符号なし なし 0
生年月日 日付 なし MUL 0001-01-01
websiteTitle tinytext なし
websiteUrl tinytext なし
場所 tinytext なし
アイシーキュー tinytext なし
AIMの はvarchar ( 16 ) なし
イム はvarchar ( 32 ) なし
MSNの tinytext なし
hideEmail はTINYINT ( 4 ) なし 0
showOnline はTINYINT ( 4 ) なし 1
timeFormat はvarchar ( 80 ) なし
署名 テキスト なし
timeOffset フロート なし 0
アバター tinytext なし
pm_email_notify はTINYINT ( 4 ) なし 0
karmaBad のsmallint ( 5 )符号なし なし 0
karmaGood のsmallint ( 5 )符号なし なし 0
usertitle tinytext なし
notifyAnnouncements はTINYINT ( 4 ) なし 1
notifyOnce はTINYINT ( 4 ) なし 1
notifySendBody はTINYINT ( 4 ) なし 0
notifyTypes はTINYINT ( 4 ) なし 2
memberIP tinytext なし
memberIP2 tinytext なし
secretQuestion tinytext なし
secretAnswer はvarchar ( 64 ) なし
ID_THEME はTINYINT ( 4 )符号なし なし 0
is_activated はTINYINT ( 3 )署名のない なし 1
validation_code はvarchar ( 10 ) なし
ID_MSG_LAST_VISIT 内科( 10 )符号なし なし 0
additionalGroups tinytext なし
smileySet はvarchar ( 48 ) なし
ID_POST_GROUP のsmallint ( 5 )符号なし なし MUL 0
totalTimeLoggedIn 内科( 10 )符号なし なし 0
passwordSalt varchar型( 5 ) なし

フィールド私たちに注意を払う必要があります:

  • memberName -自己E xplanitory。
  • dateRegistered -が必要とされていない場合は、日付を1 969年1 2月3 1日として表示されます登録に記入されていません。 タイムスタンプの日付をエポックとして保存されます。 あなたの頭の中でどのようにタイムスタンプを計算するのか分からないですか? 大丈夫。 私はここが見つかりました、フリー発生器を使用します。
  • realnameを-挿入される必要があります。 ときに私はここにmemberNameを繰り返すのか分からない
  • メールアドレス-自己E xplanitory。
  • メンバーを活性化されますので、手動 is_activated -1に設定する必要があります。
  • ID_POST_GROUP -私はうそをつくことはありません。 私はこの何なのか分かりませんが、常に4に設定しているようだ。 だから... 。 私はいつも4に設定します。 プログラムにしない最善の方法はどうするの?
  • passwdの-場合は、新しいユーザーのパスワードを付与する。 それは、 SMFのマニュアルを見ないで入力してくださいを理解することは不可能です。 適切なコードは、データベース用のSMFのパスワードを暗号化するためにこのようなものです:

($memberName).$password) $ passwdの= SHA1をstrtolower ( $ memberName ) 。 $パスワード)

コードの上の行では、 $パスワードは、ユーザーの実際のパスワードです。

その方法を:

/ /まず、 SMFのデータベースに接続

$ホスト= "ホスト名" ; / /ホスト名
$ユーザ名= "ユーザー名" ; / / MySQLユーザ名
$ mypassword = "パスワード" ; / / mysqlのパスワード
$ db_name = "ユーザー名" ; / /データベース名

("cannot connect to server"); "ホスト( " $ mysql_connect 、 " $ユーザ名" 、 " $ mypassword "は)または死ぬ ( "サーバーに" )を接続することはできません。
("cannot select DB"); mysql_select_db ( " $ db_name " ) または死ぬ ( " " ) DBを選択することはできません。

$ memberName = "アイアンマン" ;
$ realnameを= "トニースターク" ;
$メールアドレス= " ironMan@ironMan.com " ;
$ = 1 is_activated ;
$ ID_POST_GROUP = 4 ;

$パスワード= " Tony1234 " ;

($memberName).$password); $パスワード= SHA1をstrtolower ( $ memberName ) 。 $パスワード) ;

$ = 1216951200 dateRegistered ; / / 2008年7月25日午前2時

$クエリ= "に挿入、 、 ' $ 'メールアドレス、 ' $ ' is_activated 、 ' $ realnameの' ' $ memberName ' ( 、 、メールアドレス、 ID_POST_GROUP 、 dateRegistered passwdのis_activated realnameの) memberName値( ' $ smf_members ID_POST_GROUP ' 、 ' $パスワード' 、 ' $ dateRegistered ' ) " ;
("SMF Error 101.234 "); $結果= するmysql_query ( $クエリ) または死ぬ ( " SMFのエラー101.234 " ) ;

は、すべての設定は完了です!