当前位置:首页 » 编程语言 » 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-18 19:29:16 浏览:642
苹果手机配置代理服务器怎么开 发布:2024-05-18 19:29:07 浏览:229
服务器屏蔽了别人的ip 发布:2024-05-18 19:10:09 浏览:619
怎么获取ins服务器地址 发布:2024-05-18 19:10:03 浏览:30
仙方一般是什么配置 发布:2024-05-18 18:53:43 浏览:159
黑莓安卓手机主题下载到哪里 发布:2024-05-18 18:47:18 浏览:57
汤靖轩编程 发布:2024-05-18 18:46:04 浏览:533
脚本故事梗 发布:2024-05-18 18:29:02 浏览:823
安卓和csharp哪个发展好 发布:2024-05-18 18:09:30 浏览:527
换编程题库 发布:2024-05-18 18:00:58 浏览:562