发送带有纯文本后备的 HTML 新闻通讯

2024-02-27

我目前正在使用一个脚本,该脚本使用 file_get_contents 来获取 php 文件的内容,然后将其通过电子邮件发送给客户列表。我想更改脚本以允许纯文本回退,以降低被标记为垃圾邮件的风险。

这是我目前的脚本:

    function sendit($to,$subject,$body)
{
$headers    =   "To: <{$to}>\n".
                    "From: Test Newsletter Admin <[email protected] /cdn-cgi/l/email-protection>\n".
                    "Reply-To: Test Newsletter Admin <[email protected] /cdn-cgi/l/email-protection>\n".
                    "MIME-Version: 1.0\n".
                    "Content-Type: text/html; charset=ISO-8859-1\n";

    $mail_sent = @mail($to, $subject, $body, $headers);
    return $mail_sent;
}
$content = file_get_contents('attach/newsletter.php');
//require_once('../../func.php');
set_time_limit(0);
date_default_timezone_set('Europe/London');

$log = fopen('send'.date('dmY',time()).'.log','wb');

//$array = file('NonCustClean.txt');
$array = file('devaddresses.txt');
// Delay In Seconds between emails (must be INT)
$delay = 10;
$count = count($array);

$end = time()+ ($delay*$count);

echo "Start Time: ".date('d/m/Y H:i:s',time()).'<br />';
echo "Estimated End Time: ".date('d/m/Y H:i:s',$end).'<br />';
echo "(".dateDiff(time(),$end).")<br />"; 

foreach ($array as $email)
 {

$status = (sendit(trim($email), 'Test Newsletter',$content))?'Sent':'failed';
 fwrite($log,date('[d/m/Y H:i:s]',time()).' Email '.$status.' to '.trim($email)."\n");
 echo date('[d/m/Y H:i:s]',time()).' Email '.$status.' to '.trim($email)."</br>";
 flush(); 
  sleep(10);
 }

Newsletter.php 仅包含基本的 HTML/CSS 代码。

有人可以建议我如何更改此脚本以伴随纯文本后备吗?

谢谢你的帮助。


您正在寻找的内容称为多部分电子邮件。它的主体包含 HTML 和文本,由所谓的“边界”分隔。然后,电子邮件客户端将根据其功能和用户首选项自行确定是显示邮件的 HTML 版本还是文本版本。

有关如何设置此功能的示例(source http://www.tek-tips.com/faqs.cfm?fid=2681):

$notice_text = "This is a multi-part message in MIME format.";
$plain_text = "This is a plain text email.\r\nIt is very cool.";
$html_text = "<html><body>This is an <b style='color:purple'>HTML</b>" .
             "text email.\r\nIt is very cool.</body></html>";

$semi_rand = md5(time());
$mime_boundary = "==MULTIPART_BOUNDARY_$semi_rand";
$mime_boundary_header = chr(34) . $mime_boundary . chr(34);

$to = "Me <[email protected] /cdn-cgi/l/email-protection>";
$bcc = "You <[email protected] /cdn-cgi/l/email-protection>, Them <[email protected] /cdn-cgi/l/email-protection>";
$from = "Me.com <[email protected] /cdn-cgi/l/email-protection>";
$subject = "My Email";

$body = "$notice_text

--$mime_boundary
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

$plain_text

--$mime_boundary
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

$html_text

--$mime_boundary--";

if (@mail($to, $subject, $body, 
    "From: " . $from . "\n" . 
    "bcc: " . $bcc . "\n" . 
    "MIME-Version: 1.0\n" . 
    "Content-Type: multipart/alternative;\n" . 
    "     boundary=" . $mime_boundary_header))
    echo "Email sent successfully.";
else
    echo "Email NOT sent successfully!";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

发送带有纯文本后备的 HTML 新闻通讯 的相关文章

  • 将 JSON 发布到 Python CGI

    我已经安装了 Apache2 并且 Python 可以工作 但我有一个问题 我有两页 一个是 Python 页面 另一个是带有 JQuery 的 Html 页面 有人可以告诉我如何让我的 ajax 帖子正常工作吗
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • 如何使用 jQuery Ajax 将 PHP 数组值传递到另一个文件?

    这是我的代码
  • 如何在同一 PHP 页面上多次使用 mysqli fetch_assoc() 和准备好的语句?

    有没有办法启用fetch assoc 在同一页上多次使用准备好的语句 data conn gt prepare SELECT FROM some table WHERE id data gt bind param i id data gt
  • 宽度:适合内容;在 Chrome 上工作,但在资源管理器上不工作

    我构建了一个应用程序 所有内容都在 Chrome 中完美显示 但如果我在 Windows 资源管理器中打开该应用程序 容器会比应有的小 我在用着width fit content 这是只适用于 Chrome 的东西吗 我怎样才能使其适用于所
  • 合并 2 个数组并合并数字键的结果

    我有 2 个数组 我希望通过每个数字键将其中合并 分组在一起 例如 Array1 2009 gt 131 2008 gt 940 2007 gt 176 2006 gt 1 Array2 2008 gt 9 2007 gt 3 我希望输出是
  • 使用 yum 和 pear 安装 php-soap 均失败

    我正在尝试在 Centos 6 4 服务器上安装 PHP 的 SOAP 扩展 我对包管理器 从 CLI 安装包并在 PHP 中配置它们相当不熟悉 我相当有能力管理 php ini 和其他 PHP 配置文件 soap ini 等 我尝试使用以
  • php如何生成动态list()?

    根据我的理解 这就是 list 的工作原理 list A1 A2 A3 array B1 B2 B3 所以在帮助下list 我们可以相应地从数组中分配值 这是我的问题 如何生成动态list 1 基于数据库返回结果 我不确定有多少 但我将其全
  • Outlook 2013 渲染问题:嵌套表格截断相邻文本

    在开发 html 电子邮件通讯时 我经常使用类似于以下的结构 table width 244 border 0 cellpadding 0 cellspacing 0 tr td table border 0 align left tbod
  • PHP switch case 在 case 中存在多个值

    我有一个变量保存值 每周 每月 季度 和 年度 还有另一个变量保存值从 1 到 10 switch var2 case 1 var3 Weekly break case 2 var3 Weekly break case 3 var3 Mon
  • php date_parse("2010 年 2 月") 给出日期 == 1

    当没有日期时 我将其称为 date parse 中的错误 d date parse Feb 2010 会给 d day 1 请参阅对此的评论date parse 手册页 http php net manual en function dat
  • 设置大型电子邮件通知系统有哪些方法?

    我的公司有一个用 PHP 构建的网站 我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件 这是一个糟糕的主意 它堵塞了我们的服务器 并且需要几个小时才能完成整个批次 现在我已经研究过像 MailChimp 这样的群发邮件服务
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 如何使用 JavaScript 获取元素的填充值?

    我有一个textarea在我的 HTML 中 我需要获取整数或浮点形式的填充数值 以像素为单位 我如何使用 JavaScript 获取它 我没有使用 jQuery 所以我正在寻找纯 JavaScript 解决方案 这将返回padding l
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • AngularJS 在指令运行之前通过 AJAX 检索数据

    我正在使用 AngularUIuiMap http angular ui github com directives map实例化谷歌地图的指令 uiMap 指令非常适合处理硬编码数据 mapOptions and myMarkers 但是
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • Readfile 从大文件中读取 0 字节?

    我正在尝试通过以下方式发送一个大文件readfile 但是 没有任何内容发送到浏览器 并且readfile 回报0 not false 我尝试发送的文件大小为 4GiB 并且可由 PHP 读取 我正在设置set time limit 0 以
  • 使用 VBA 通过 Access 导航网页/操作 IE

    你好 StackOverflow 社区 我有一个关于使用 Access VBA 操作 IE 的问题 本质上 我正在尝试编写代码 使用 IE 打开特定网页 在该页面中搜索特定链接 目标链接的名称将取决于用户的情况 通过以编程方式单击该链接导航

随机推荐

  • 当我添加到数组时,svelte 列表不会更新

    我刚刚开始使用 svelte 所以 这可能是一个菜鸟问题 我有一个列表 我可以从数组中删除项目 并且列表 each 更新没有问题 但是如果我将一个项目添加到数组中 列表不会重新绘制 直到我删除另一个项目 https svelte dev r
  • 如何使用客户端证书在 Web API 中进行身份验证和授权

    我尝试使用客户端证书对使用 Web API 的设备进行身份验证和授权 并开发了一个简单的概念证明来解决潜在解决方案的问题 我遇到了 Web 应用程序未收到客户端证书的问题 许多人报告了这个问题 包括在这个问答中 https stackove
  • 读取 iPhone 运营商的信号强度

    这可能吗 如果没有的话 我真的很惊讶这还没有通过 API 开放 Apple 不允许使用低级网络 wifi 蜂窝 API 有趣的是 在之前的一段时间内 应用程序商店中有些应用程序使用了私有 api 例如一些 WIFI 扫描仪 至少据我所知 现
  • Python 中的线程

    关于如何在 Python 中使用线程的一般教程或好的资源 何时使用线程 它们如何有效以及线程的一些一般背景 特定于 Python 当您希望同时运行两个事物 或者希望某些事物在后台运行而不减慢主进程时 应该使用线程 我的建议是仅在必要时才使用
  • 将每个列表值映射到其相应的百分位

    我想创建一个函数 它接受 排序的 列表作为其参数 并输出一个包含每个元素相应百分位数的列表 例如 fn 1 2 3 4 17 回报 0 0 0 25 0 50 0 75 1 00 任何人都可以请 帮我改正下面的代码吗 或者 是否提供了比我的
  • 仅使用移动窗口中的先前值的线性回归

    我有一个巨大的数据集 想要在 60 个窗口上执行滚动线性回归 但是 我希望线性回归只考虑 60 个先前的值 我的 Dataframe DF 包含以下列 Date Company Y X1 X2 01 01 2015 Mill 0 13 1
  • 在工具栏子元素顶部添加后退按钮

    我有以下布局文件 如何在下面的布局中的工具栏的 Imageview 子项顶部 或覆盖在 z index 上 添加后退按钮 箭头
  • AppEngine 延迟库中的 PermanentTaskFailure

    我正在使用 App Engine 和延迟库 但每隔一段时间我的任务就会失败并出现以下错误 Permanent failure attempting to execute task Traceback most recent call las
  • 如何将 Iplimage 放在图片框上?

    有没有办法在图片框中显示 IplImage 我不想保存图像并将其重新加载到图片框中 因为我需要我的程序速度快 我在 C 中使用 opencv 2 1 我正在使用 Visual Studio 2008 谢谢 这已经讨论过了here http
  • 使用递归查找列表中第二小的数字

    我知道有人就这个主题提出了问题 但没有一个答案对我有帮助 我不需要帮助实现代码 我只需要帮助对此递归过程进行排序 我最初想在每个级别递归地返回一个元组并进行比较以找到第二小的值 但这不起作用 因为我希望我的函数最终只返回 1 个值 第二个最
  • Java 中的 C# IEnumerable 相当于什么?具有协变能力的,而不是可迭代的

    这种协方差在 C 中是可能的 IEnumerable a a new List a IEnumerable b b new List b a b class A class B A 这在 Java 中是不可能的 Iterable 在这个问题
  • 如何更改 check_box 的默认值?在 Ruby on Rails 中

    如何更改 check box 的默认值 意见 医生 form html erb br pass 属性的数据类型为string 但仍然没有创造任何价值 pass数据库中的属性 因此 我将 pass 属性的数据类型更改为 boolean 现在它
  • 我应该如何修改对 HTTP 请求的响应并在从 Observable 返回之前轻松访问它?

    我正在升级到 Angular 到版本 5 我正在使用 angular http之前和现在我需要更新到 angular common http并使用HttpClient https angular io guide http 我已经在服务中
  • 如何在不使用 .htaccess 的情况下隐藏 PHP 文件扩展名

    我怎样才能隐藏 phpURL 地址中的扩展名 因此该地址 http www thesite com somefile php 看起来像 http www thesite com somefile without使用 htaccess文件 原
  • 将带有分隔符的列字符串拆分为 azure kusto 中的单独列

    我在天蓝色表中有一列 苹果 其中包含以下字符串 颜色 红色 尺寸 小 现在的情况 Apples Colour red Size small 期望的情况 Colour Size Red small 请帮忙 我会回答这个标题 因为我注意到很多人
  • 支持 XSD 1.1 的 Java 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有支持 XSD 1 1 的 java 库 我已经尝试找到它2天了 我发现的唯一实现是Xerces2
  • 获取资源编号值时没有包标识符

    I have read question with similar titles already 正如您所看到的 没有太多信息 我已检查 R 文件中没有 0x00000021c 资源 当我按下按钮并创建新的 Intent 并且想要将新的 A
  • 骆驼工作单元

    我试图理解骆驼中的工作单元概念 我有一个简单的问题希望这里有人可以提供帮助 例如 如果路由交换涉及多个路由 from aws sqs Q1 to direct processMe route1 from direct processMe t
  • 如何指定网页的语言,以便 Google Chrome 不提供翻译功能

    我有一个 Google Chrome 坚持认为是法语的页面 这是它的快照 http yootles com outbox overcleverchrome html http yootles com outbox overcleverchr
  • 发送带有纯文本后备的 HTML 新闻通讯

    我目前正在使用一个脚本 该脚本使用 file get contents 来获取 php 文件的内容 然后将其通过电子邮件发送给客户列表 我想更改脚本以允许纯文本回退 以降低被标记为垃圾邮件的风险 这是我目前的脚本 function send