當前位置:首頁 » 編程語言 » php群發郵件

php群發郵件

發布時間: 2023-05-23 05:24:10

php 每日發送80萬封郵件,現在需要用到消息隊列,哪種比較適合呀

redis,80萬,用list,依次執行就行

⑵ php通過 smtp發送郵件問題

程序中:$this->smtp_putcmd("", base64_encode($this->pass)
登陸密碼base64後明文發送,認證方式為未加密方式,163的郵箱支持未加密的認證,其他郵箱就未必了,而且像google郵箱也不接晌搏鬧受來自本localhost主機發送的郵件,只接受開放smtp服務的主機發送郵件。

以下這段程序是原來寫的,探測smtp主機的,在$server數組中添加smtp主機就可以了,只有返回AUTH LOGIN PLAIN的才可以用你說的程序發送郵件:

<?
set_time_limit( 0 );
$server = array(
"smtp.163.com",
"smtp.sina.com",
"銀陪smtp.google.com",
);
echo "<pre style='font-size:12px;font-family:verdana'>";
foreach ( $server as $key => $val) {
$fp = fsockopen( $val, 25, $errno, $errstr, 10 );
if ( $errno !==0 ) {
echo("Can not connect to $val .\宴罩r\n");
continue;
}
echo "\r\n<font color=red>$val</font> \r\n";
echo fread( $fp, 1024);
fputs( $fp, "EHLO localhost\r\n" );
echo fread( $fp, 1024 );
fclose( $fp );

⑶ php如何發送郵件

你好,用這個郵件類,需要在調用時,填寫一個smtp伺服器和你的用戶名密碼。

<?php
set_time_limit(600);
/*
* 郵件發送類
*/
class smail {
//您的SMTP 伺服器供應商,可以是域名或IP地址
var $smtp = "";
//SMTP需要要身份驗證設值為 1 不需要身份驗證值為 0,現在大多數的SMTP服務商都要驗證,如不清楚請與你的smtp 服務商聯系。
var $check = 1;
//您的email帳號名稱
var $username = "";
//您的email密碼
var $password = "";
//此email 必需是發信伺服器上的email
var $s_from = "";
/*
* 功能:發信初始化設置
* $from 你的發信伺服器上的郵箱
* $password 你的郵箱密碼
* $smtp 您的SMTP 伺服器供應商,可以是域名或IP地址
* $check SMTP需要要身份驗證設值為 1 不需要身份驗證值為 0,現在大多數的SMTP服務商都要驗證
*/
function smail ( $from, $password, $smtp, $check = 1 ) {
if( preg_match("/^[^\d\-_][\w\-]*[^\-_]@[^\-][a-zA-Z\d\-]+[^\-](\.[^\-][a-zA-Z\d\-]*[^\-])*\.[a-zA-Z]{2,3}/", $from ) ) {
$this->username = substr( $from, 0, strpos( $from , "@" ) );
$this->password = $password;
$this->smtp = $smtp ? $smtp : $this->smtp;
$this->check = $check;
$this->s_from = $from;
}
}
/*
* 功能:發送郵件
* $to 目標郵箱
* $from 來源郵箱
* $subject 郵件標題
* $message 郵件內容
*/
function send ( $to, $from, $subject, $message ) {
//連接伺服器
$fp = fsockopen ( $this->smtp, 25, $errno, $errstr, 60);
if (!$fp ) return "聯接伺服器失敗".__LINE__;
set_socket_blocking($fp, true );
$lastmessage=fgets($fp,512);
if ( substr($lastmessage,0,3) != 220 ) return "錯誤信息1:$lastmessage".__LINE__;
//HELO
$yourname = "YOURNAME";
if($this->check == "1") $lastact="EHLO ".$yourname."\r\n";
else $lastact="HELO ".$yourname."\r\n";
fputs($fp, $lastact);
$lastmessage == fgets($fp,512);
if (substr($lastmessage,0,3) != 220 ) return "錯誤信息2:$lastmessage".__LINE__;
while (true) {
$lastmessage = fgets($fp,512);
if ( (substr($lastmessage,3,1) != "-") or (empty($lastmessage)) )
break;
}
//身份驗證
if ($this->check=="1") {
//驗證開始
$lastact="AUTH LOGIN"."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "錯誤信息3:$lastmessage".__LINE__;
//用戶姓名
$lastact=base64_encode($this->username)."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "錯誤信息4:$lastmessage".__LINE__;
//用戶密碼
$lastact=base64_encode($this->password)."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != "235") return "錯誤信息5:$lastmessage".__LINE__;
}
//FROM:
$lastact="MAIL FROM: <". $this->s_from . ">\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "錯誤信息6:$lastmessage".__LINE__;
//TO:
$lastact="RCPT TO: <". $to ."> \r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "錯誤信息7:$lastmessage".__LINE__;
//DATA
$lastact="DATA\r\n";
fputs($fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 354) return "錯誤信息8:$lastmessage".__LINE__;

//處理Subject頭
$head="Subject: $subject\r\n";
$message = $head."\r\n".$message;

//處理From頭
$head="From: $from\r\n";
$message = $head.$message;
//處理To頭
$head="To: $to\r\n";
$message = $head.$message;

//加上結束串
$message .= "\r\n.\r\n";
//發送信息
fputs($fp, $message);
$lastact="QUIT\r\n";
fputs($fp,$lastace);
fclose($fp);
return 0;
}
}
// 發送示例

// 只需要把這部分改成你的信息就行
$sm = new smail( "用戶名", "密碼", "發件smtp伺服器" );
$end = $sm->send( "收件人", "發件人(可以偽造哦)", "標題", "內容" );
if( $end ) echo $end;
else echo "發送成功!$x";
?>

⑷ PHP發送的電郵, hotmail收不到, 怎樣做

親 我給你份資料,你自己學學 關於 PHPmailer的,這個是燕十八的課,你網上搜搜,他的網站 自學IT網

,不行你就用他的方法 發郵件 真的自己使用socke他純便 指不定就那裡寫錯了,建議你使用PHPMAILER

第一,需要下載PHPMailer文件包phpmailer. http://phpmailer.sourceforge.net/
第二,確認你的伺服器系統已經支持socket ,通過phpinfo();查看是否支持sockets(socket 是屬於沒哪PHP擴展部分),如果顯現為「enabled」,那就是支持了。
第三,把文件解壓到你的web伺服器目錄下,調用類就可以了.
首先包含class.phpmailer.php,然後創建對象,設置參數,調用成員函數。

例1,做成函數方便調用

復制代碼 代碼如下:


<?php
require("phpmailer/class.phpmailer.php");
function smtp_mail( $sendto_email, $subject, $body, $extra_hdrs, $user_name){
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "200.162.244.66"; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "yourmail"; // SMTP username 注意:普通郵件認證不需要加 @域名
$mail->Password = "mailPassword"; // SMTP password
$mail->From = "[email protected]"; // 發件人郵箱
$mail->FromName = "管理員"; // 發件人

$mail->CharSet = "GB2312"; // 這里指定字元集!
$mail->Encoding = "base64";
$mail->AddAddress($sendto_email,"username"); // 收件人郵箱和姓名
$mail->AddReplyTo("[email protected]","yourdomain.com");
//$mail->WordWrap = 50; // set word wrap 換行字數
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment 附件
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
$mail->IsHTML(true); // send as HTML
// 郵件主題
$mail->Subject = $subject;
// 郵件內容
$mail->Body = "
<html><head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>
<body>
I love php。
</body>
</html>
";
$mail->AltBody ="text/html";
亮消 if(!$mail->Send())
{
echo "郵件發送有誤 <p>";
echo "郵件錯誤信息: " . $mail->ErrorInfo;
exit;
}
else {
echo "$user_name 郵件發送成功!<br />";
枯鍵碼 }
}
// 參數說明(發送到, 郵件主題, 郵件內容, 附加信息, 用戶名)
smtp_mail("[email protected]", "歡迎使用phpmailer!", "NULL", "yourdomain.com", "username");
?>

注意:

1.郵件的字元集設置, $mail->CharSet = "GB2312"; // 這里指定字元集!在這里我只指定為GB2312因為這樣Outlook能正常顯示郵件主題,我嘗試過設為utf-8但在Outlook下顯示亂碼。
2.如果是發送html格式的郵件,那麼記得也指定
3.如果你想用它來群發郵件的話,記得修改包含文件函數,如:
require("phpmailer/class.phpmailer.php");
改為
require_once("phpmailer/class.phpmailer.php");
否則的話會產生類的重定義。

個人認為要使用phpmailer,首先,需要有一個郵件伺服器,PHP的 mail函數沒有指定,應該是使用的PHP設置的SMTP。

而在這里需要具體指定,同時需要指定郵件伺服器的管理者和密碼。

PHPMailer 也是一個功能強大的郵件類

PHPMailer的主要功能特點:

支持郵件 s/mime加密的數字簽名
支持郵件多個 TOs, CCs, BCCs and REPLY-TOs
可以工作在任何伺服器平台,所以不用擔心WIN平台無法發送郵件的問題的
支持文本/HTML格式郵件
可以嵌入image圖像
對於郵件客戶端不支持HTML閱讀的進行支持
功能強大的發送郵件調試功能debug
自定義郵件header
冗餘SMTP伺服器支持
支持8bit, base64, binary, and quoted-printable 編碼
文字自動換行
支持多附件發送功能
支持SMTP伺服器驗證功能
在Sendmail, qmail, Postfix, Gmail, Imail, Exchange 等平台測試成功
提供的下載文件中,包括內容詳細的說明文檔及示例說明,所以不用擔心難於上手的問題!
PHPMailer 非常小巧、簡單、方便、快捷
以上資料由Jiucool 翻譯自phpmailer 官網,轉載請註明!

PHPMailer的使用(這里以使用gmail smtp發送郵件為例,當然也支持sendmail pop 等其他方式):
首先到http://phpmailer.worxware.com/ 下載最新版本的程序包
下載完成後,找到class.phpmailer.php 、class.smtp.php兩個類放到自己的目錄下!
然後新建一個php文件這里命名為:phpmail_jiucool.php
phpmail_jiucool.php內容如下:
我直接將郵件發送模塊寫成一個函數postmail_jiucool_com(),大家使用的時候直接調用該函數即可,函數內容為:

復制代碼 代碼如下:


function postmail_jiucool_com($to,$subject = "",$body = ""){
//Author:Jiucool WebSite: http://www.jb51.net
//$to 表示收件人地址 $subject 表示郵件標題 $body表示郵件正文
//error_reporting(E_ALL);
error_reporting(E_STRICT);
date_default_timezone_set("Asia/Shanghai");//設定時區東八區
require_once('class.phpmailer.php');
include("class.smtp.php");
$mail = new PHPMailer(); //new一個PHPMailer對象出來
$body = eregi_replace("[]",'',$body); //對郵件內容進行必要的過濾
$mail->CharSet ="UTF-8";//設定郵件編碼,默認ISO-8859-1,如果發中文此項必須設置,否則亂碼
$mail->IsSMTP(); // 設定使用SMTP服務
$mail->SMTPDebug = 1; // 啟用SMTP調試功能
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // 啟用 SMTP 驗證功能
$mail->SMTPSecure = "ssl"; // 安全協議
$mail->Host = "smtp.googlemail.com"; // SMTP 伺服器
$mail->Port = 465; // SMTP伺服器的埠號
$mail->Username = "SMTP伺服器用戶名"; // SMTP伺服器用戶名
$mail->Password = "SMTP伺服器密碼"; // SMTP伺服器密碼
$mail->SetFrom('發件人地址,如admin#jiucool.com #換成@', '發件人名稱');
$mail->AddReplyTo("郵件回復地址,如admin#jiucool.com #換成@","郵件回復人的名稱");
$mail->Subject = $subject;
$mail->AltBody
= "To view the message, please use an HTML compatible email viewer! -
From www.jiucool.com"; // optional, comment out and test
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, "收件人名稱");
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!恭喜,郵件發送成功!";
}
}


⑸ PHP到底怎麼發送郵件啊,PHP高手請指教!

很懷疑樓上的是不是都是抄的。宴鏈

以下是我幫別人寫的一段發送找回密碼的代碼,在windows,apache2,php5下正常運行,也沒有亂碼現象

需要windows的STMP支持,
STMP可以在控制面板的 添加/刪除軟體 裡面安裝

$to = $info['txtEmail'];
$subject = "找回密碼";
$subject = "=?UTF-8?B?".base64_encode('找回密碼')."?=";
$message = $txtUnionID.',你好:
請點擊下面鏈接找回密碼:
<a href="http://'.$_SERVER['SERVER_NAME']" target="_blank">
http://'.$_SERVER['SERVER_NAME'].'/union/index.php?m=forgetPassword&id='.$md5.'</a>
(如果鏈接無法點擊,
請將它拷貝到瀏覽器的地址欄中。)
有效時間為三天
此郵件為系統自動發送慶祥跡,請勿回復'.
$_SERVER['SERVER_NAME'].
date('Y年m月d日');
$from = "[email protected]";
//$headers = "From: $from";
$headers = 'MIME-Version: 1.0' . "譽並\r\n";
$headers .= "From: $from"."\r\n"."Reply-to:$from"."\r\n"."X-Mailer: PHP".phpversion()."\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
mail($to,$subject,$message,$headers);

⑹ phpmailer altbody 是什麼意思

它提供的功能包括:
*.在發送郵時指定多個收件人,抄送地址,暗送地址和回復地址
*.支持多種郵件編碼包括:8bit,base64,binary和quoted-printable
*.支持SMTP驗證
*.支持冗餘SMTP伺服器
*.支持帶附件的郵件和Html格式的郵件
*.自定義郵件頭
*.支持在郵件中嵌入圖片
*.調試靈活
*.經測試兼容的SMTP伺服器包括:Sendmail,qmail,Postfix,Imail,Exchange等
*.可運行在任何平台之上
內部函數編輯
mail函數
php本身提供了一個郵件發送函數mail,可以在程序中直接發送電子郵件,不過該函數要求伺服器支持sendmail或者必須設置一台不需要中繼含液的郵件發送伺服器,但現在要找到一台不需要身談敬物份驗證的郵件發送中繼幾乎不可能,所以使用mail函數往往無法成功發送email.
自己如果熟悉SMTP協議,結合socket功能就可以編寫高效穩定的郵件發送程序,但對一般用戶來說太困難.好在互聯網上已經有很多別人編寫好的郵件發送模塊,我們只需要下載後簡單調用即可,十分方便.
Mail配置選項
名稱
默認
描述
可更改
SMTP
"localhost"
Windows 專用:SMTP 伺服器的 DNS 名稱或 IP 地址。
PHP_INI_ALL
smtp_port
"25"
Windows 專用:SMTP 埠號。自 PHP 4.3 起可用。
PHP_INI_ALL
sendmail_from
NULL
Windows 專用:規定從 PHP 發送的郵件中使用的 "from" 地址。
PHP_INI_ALL
sendmail_path
NULL
Unix 系統專用:路徑(通常 /usr/sbin/sendmail 或 /usr/lib/sendmail)
PHP_INI_SYSTEM
郵件教程編輯
第一步:需要下載PHPMailer文件包(下載地址見擴展閱讀)
第二步:確認你的伺服器系統已經支持socket 如下圖,通過phpinfo();查看是否支持sockets
如果沒有這一項就請注意: socket 是屬於PHP擴展部分,編譯時必須給定一個用於./configure --enable-sockets 的配置選項。
第三步:把文件解壓到你的web伺服器目錄下,調用類就可以了,說明:首先包含class.phpmailer.php,然後創建對象,設置參數,調用成員函數。具體請見下面的示例代碼:
以下為引用的內容:
<?php
require("稿賣phpmailer/class.phpmailer.php");
function smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name) {
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP phperz~com
$mail->Host = "200.162.244.66"; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "yourmail"; // SMTP username 注意:普通郵件認證不需要加 @域名
$mail->Password = "mailPassword"; // SMTP password
$mail->From = "你的郵件地址";
?>
發送示例代碼編輯
下載該組件後,按如下示例編寫代碼即可實現php在線發送郵件.
一:前台表單
<html>
<body>
<h3>phpmailer Unit Test</h3>
請你輸入<font color="#FF6666">收信</font>的郵箱地址:
<form name="phpmailer" action="send.php" method="post">
<input type="hidden" name="submitted" value="1"/>
郵箱地址: <input type="text" size="50" name="address" />
<br/>
<input type="submit" value="發送"/>
</form>
</body>
</html>
二:後台PHP程序
<?php
require("class.phpmailer.php"); //下載的文件必須放在該文件所在目錄
$mail = new PHPMailer(); //建立郵件發送類
$address = $_POST['address'];
$mail->IsSMTP(); // 使用SMTP方式發送
$mail->CharSet='UTF-8';// 設置郵件的字元編碼
$mail->Host = "mail.xxxxx.***"; // 您的企業郵局域名
$mail->SMTPAuth = true; // 啟用SMTP驗證功能
$mail->Port = "***"; //SMTP埠
$mail->Username = ***@xxxx.***; // 郵局用戶名(請填寫完整的email地址)
$mail->Password = "******"; // 郵局密碼
$mail->From = ***@xxxx.***; //郵件發送者email地址
$mail->FromName = "您的名稱";
$mail->AddAddress("$address", "");//收件人地址,可以替換成任何想要接收郵件的email信箱,格式是AddAddress("收件人email","收件人姓名")
//$mail->AddReplyTo("", "");
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // 添加附件
//$mail->IsHTML(true); // set email format to HTML //是否使用HTML格式
$mail->Subject = "PHPMailer測試郵件"; //郵件標題
$mail->Body = "Hello,這是測試郵件"; //郵件內容
$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; //附加信息,可以省略
if(!$mail->Send())
{
echo "郵件發送失敗. <p>";
echo "錯誤原因: " . $mail->ErrorInfo;
exit;
}
echo "郵件發送成功";
?>
群發示例代碼編輯
require("class.phpmailer.php");
$mail = new PHPMailer();
//通過數組方式存儲郵件接收者
$address = array('aaaaaa','bbbbbb');
//使用SMTP方式發送郵件
$mail->IsSMTP();
//郵局伺服器
$mail->Host = 'smtp.exmail.*';
//開啟SMTP驗證
$mail->SMTPAuth = true;
//郵局主機中的用戶名
$mail->Username = 'admin';
//郵局密碼
$mail->Password = '123456';
//郵局埠,SMTP默認25埠
$mail->Port=25;
//郵件發送者email地址
$mail->From = 'xxxxxxx';
//郵件來源(發件人)
$mail->FromName = 'PHPMailer群發Demo';
$len = count($address);
for ($i=0; $i < $len; $i++) {
$mail->AddAddress($address[$i]);
}
$mail->Subject = $title;//郵件標題
$mail->Body = $content;//郵件內容
$mail->Send();

⑺ 如何用PHP發電子郵件

環境是linux的話 mail()就可以 或者 phpmailer之類的

⑻ PHP 點擊按鈕發送一封郵件

<?php

$to = "[email protected]";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "[email protected]";
$headers = "From: $from";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";

?>茄如

郵件函畝納空數的行為受 php.ini 的影迅瞎響。
詳細內容請自行查看php手冊的mail函數

⑼ php 用mail()定時發送郵件

請參考自動執行腳本
然後群發不被當做垃圾郵件這個問題很值得討論的。
這里邊的因素有很多。
你的郵件伺服器本身有公網ip
有反向dns
如果能獲得DomainKey-Signature就更扒銀鍵好了!

<?php
ignore_user_abort(); //即使Client斷開(如關掉瀏覽器),PHP腳本也可以繼續執行.
set_time_limit(0); // 執行時間為無春巧限制,php默認的執行時間是30秒,通過set_time_limit(0)可以讓程序無限制的執行下去
$interval=60*3; // 每隔3分鍾運行
do{

//mail發送動作,具體代碼請搏旁自己補充完成

sleep($interval); // 等待5分鍾
}while(true);
?>

⑽ 如何使用php中的mail函數發送html格式的信

採用phpmailer類,來做郵件發送,是很多PHP程序所採用的一個類發送
require(ROOT.'/class/phpMailer.class.php');//郵件發送類
/**
*發送郵件
*@paramstring$to接收人郵件地址
*@paramstring$title郵件標題
*@paramstring$contents郵件內容支持HTML格式
*@paramstring$type判斷是否要加附件
*@paramstring$accessory附件的名字
*@return成功返回true,失敗返回錯誤信息
*/
functionsendEmail($to,$title,$contents,$type='',$accessory=''){
$mail=newPhpMailer(true);
$mail->IsSMTP();
$mail->CharSet="UTF-8";//編碼
$mail->Debugoutput='html';//支持HTML格式
$mail->Host=T_SMTP_SERVER;//HOST地址
$mail->Port=25;//埠
$mail->SMTPAuth=true;
$mail->Username=T_SMTP_LOGIN;//用戶名
$mail->Password=T_SMTP_PASSWORD;//密碼
$mail->SetFrom(T_SMTP_FROM,T_SMTP_FROM_NAME);//發件人地址,發件人名稱
$mail->AddAddress($to);//收信人地址
//$mail->Subject="=?utf-8?B?".base64_encode()."?=";
if(!empty($type)){
$mail->AddAttachment($type,$accessory);//添加附件,並指定名稱
}
$mail->Subject=$title;//郵件標題
$mail->MsgHTML($contents);
if($mail->Send()){
returntrue;
}else{
return$mail->errorMessage();
}
}

熱點內容
管理雲伺服器 發布:2024-05-04 21:36:31 瀏覽:551
給linux虛擬機傳文件 發布:2024-05-04 21:36:28 瀏覽:312
加密手機在哪裡 發布:2024-05-04 21:18:59 瀏覽:191
掃雷電腦配置低怎麼辦 發布:2024-05-04 21:07:37 瀏覽:821
微雲緩存文件在哪裡 發布:2024-05-04 20:53:07 瀏覽:509
咸陽市移動dns伺服器地址 發布:2024-05-04 20:39:19 瀏覽:442
小車哪個配置好 發布:2024-05-04 20:38:38 瀏覽:797
周長的演算法 發布:2024-05-04 20:37:46 瀏覽:371
保衛蘿卜2安卓版什麼時候更新 發布:2024-05-04 20:08:48 瀏覽:203
建工黨建宣傳片腳本 發布:2024-05-04 20:07:31 瀏覽:219