Files
pages/2018/11/10/email-sender.html
2026-02-04 14:28:37 +00:00

421 lines
34 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>免费订阅一个属于自己的邮件日报 | Mayx的博客</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="免费订阅一个属于自己的邮件日报" />
<meta name="author" content="mayx" />
<meta property="og:locale" content="zh_CN" />
<meta name="description" content="前几天,我给自己做了一个邮件订阅系统" />
<meta property="og:description" content="前几天,我给自己做了一个邮件订阅系统" />
<meta property="og:site_name" content="Mayx的博客" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2018-11-10T00:00:00+08:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="免费订阅一个属于自己的邮件日报" />
<meta name="google-site-verification" content="huTYdEesm8NaFymixMNqflyCp6Jfvd615j5Wq1i2PHc" />
<meta name="msvalidate.01" content="0ADFCE64B3557DC4DC5F2DC224C5FDDD" />
<meta name="yandex-verification" content="fc0e535abed800be" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"mayx"},"dateModified":"2018-11-10T00:00:00+08:00","datePublished":"2018-11-10T00:00:00+08:00","description":"前几天,我给自己做了一个邮件订阅系统","headline":"免费订阅一个属于自己的邮件日报","mainEntityOfPage":{"@type":"WebPage","@id":"/2018/11/10/email-sender.html"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://avatars0.githubusercontent.com/u/17966333"},"name":"mayx"},"url":"/2018/11/10/email-sender.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="canonical" href="https://mabbs.github.io/2018/11/10/email-sender.html" />
<link type="application/atom+xml" rel="alternate" href="/atom.xml" title="Mayx的博客" />
<link rel="alternate" type="application/rss+xml" title="Mayx的博客(RSS)" href="/rss.xml" />
<link rel="alternate" type="application/json" title="Mayx的博客(JSON Feed)" href="/feed.json" />
<link rel="stylesheet" href="/assets/css/style.css?v=1770215312" />
<!--[if !IE]> -->
<link rel="stylesheet" href="/Live2dHistoire/live2d/css/live2d.css" />
<!-- <![endif]-->
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Mayx的博客" />
<link rel="webmention" href="https://webmention.io/mabbs.github.io/webmention" />
<link rel="pingback" href="https://webmention.io/mabbs.github.io/xmlrpc" />
<link rel="preconnect" href="https://summary.mayx.eu.org" crossorigin="anonymous" />
<link rel="prefetch" href="https://www.blogsclub.org/badge/mabbs.github.io" as="image" />
<link rel="blogroll" type="text/xml" href="/blogroll.opml" />
<link rel="me" href="https://github.com/Mabbs" />
<script src="/assets/js/jquery.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script>
var lastUpdated = new Date("Wed, 04 Feb 2026 22:28:32 +0800");
var BlogAPI = "https://summary.mayx.eu.org";
</script>
<script src="/assets/js/main.js"></script>
<!--[if !IE]> -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="async" src="https://www.googletagmanager.com/gtag/js?id=UA-137710294-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-137710294-1');
</script>
<script src="/assets/js/instant.page.js" type="module"></script>
<!-- <![endif]-->
</head>
<body>
<!--[if !IE]> --><noscript><marquee style="top: -15px; position: relative;"><small>发现当前浏览器没有启用JavaScript这不影响你的浏览但可能会有一些功能无法使用……</small></marquee></noscript><!-- <![endif]-->
<!--[if IE]><marquee style="top: -15px; position: relative;"><small>发现当前浏览器为Internet Explorer这不影响你的浏览但可能会有一些功能无法使用……</small></marquee><![endif]-->
<div class="wrapper">
<header class="h-card">
<h1><a class="u-url u-uid p-name" rel="me" href="/">Mayx的博客</a></h1>
<img src="https://avatars0.githubusercontent.com/u/17966333" fetchpriority="high" class="u-photo" alt="Logo" style="width: 90%; max-width: 300px; max-height: 300px;" />
<p class="p-note">Mayx's Home Page</p>
<form action="/search.html">
<input type="text" name="keyword" id="search-input-all" placeholder="Search blog posts.." />&#160;<input type="submit" value="搜索" />
</form>
<br />
<p class="view"><a class="u-url" href="/Mabbs/">About me</a></p>
<ul class="downloads">
<li style="width: 270px; border-right: none;"><a href="/MayxBlog.tgz">Download <strong>TGZ File</strong></a></li>
</ul>
</header>
<section class="h-entry">
<small><time class="date dt-published" datetime="2018-11-10T00:00:00+08:00">10 November 2018</time> - 字数统计3753 - 阅读大约需要13分钟 - Hits: <span id="/2018/11/10/email-sender.html" class="visitors">Loading...</span></small>
<h1 class="p-name">免费订阅一个属于自己的邮件日报</h1>
<p class="view">by <a class="p-author h-card" href="//github.com/Mabbs">mayx</a></p>
<div id="outdate" style="display:none;">
<hr /><p>
这是一篇创建于 <span id="outime"></span> 天前的文章,其中的信息可能已经有所发展或是发生改变。
</p>
</div>
<script>
daysold = Math.floor((new Date().getTime() - new Date("Sat, 10 Nov 2018 00:00:00 +0800").getTime()) / (24 * 60 * 60 * 1000));
if (daysold > 90) {
document.getElementById("outdate").style.display = "block";
document.getElementById("outime").innerHTML = daysold;
}
</script>
<hr />
<b>AI摘要</b>
<p id="ai-output">这篇文章介绍了作者如何利用PHP制作了一个免费订阅的邮件日报系统。作者通过搜索并利用现成的PHP资源如sendmail和CronTab功能设置了自动发送邮件的工作流程。邮件包含了天气预报、笑话和新闻等内容且制作者留有余地如使用Travis-CI和短信提醒等功能进行扩展。最后作者分享了创建过程中的心得和提示欢迎读者尝试并加入邮件订阅。</p>
<hr />
<ul><li><a href="#制作方法">制作方法</a></li><li><a href="#代码">代码</a></li><li><a href="#后记">后记</a></li></ul>
<hr />
<main class="post-content e-content" role="main"><p>前几天,我给自己做了一个邮件订阅系统<!--more-->是用PHP做的。这里不得不夸赞一下PHPPHP真不愧是世界上最好的语言我从来没学过PHP但是我光靠百度搜到
的东西拼凑就能搞出这个邮件订阅系统还是很不错的而且网上的免费PHP空间也有很多所以就可以很轻易的给自己搞一个免费的邮件订阅系统。</p>
<h1 id="制作方法">
<a href="#制作方法"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 制作方法
</h1>
<p>很简单首先去百度上搜一个带sendmail和CronTab的免费PHP主机空间然后在上面创建一个PHP文件随便取什么名字都好只要后缀是PHP就可以然后把下面的代码
粘上去保存然后在主机面板上设置CornTab任务设定为每天运行一次然后OK……对了记得把下面变量<code class="language-plaintext highlighter-rouge">$to</code>里面的地址换成自己的邮箱地址,不然每次发送邮件就会发
到我的邮箱了……</p>
<h1 id="代码">
<a href="#代码"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 代码
</h1>
<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;?php</span>
<span class="k">function</span> <span class="n">curl_post_https</span><span class="p">(</span><span class="nv">$url</span><span class="p">,</span><span class="nv">$data</span><span class="p">){</span> <span class="c1">// 模拟提交数据函数</span>
<span class="nv">$curl</span> <span class="o">=</span> <span class="nb">curl_init</span><span class="p">();</span> <span class="c1">// 启动一个CURL会话</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_URL</span><span class="p">,</span> <span class="nv">$url</span><span class="p">);</span> <span class="c1">// 要访问的地址</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_SSL_VERIFYPEER</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span> <span class="c1">// 对认证证书来源的检查</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_SSL_VERIFYHOST</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="c1">// 从证书中检查SSL加密算法是否存在</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_FOLLOWLOCATION</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="c1">// 使用自动跳转</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_AUTOREFERER</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="c1">// 自动设置Referer</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_POST</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="c1">// 发送一个常规的Post请求</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_POSTFIELDS</span><span class="p">,</span> <span class="nv">$data</span><span class="p">);</span> <span class="c1">// Post提交的数据包</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_TIMEOUT</span><span class="p">,</span> <span class="mi">30</span><span class="p">);</span> <span class="c1">// 设置超时限制防止死循环</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_HEADER</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span> <span class="c1">// 显示返回的Header区域内容</span>
<span class="nb">curl_setopt</span><span class="p">(</span><span class="nv">$curl</span><span class="p">,</span> <span class="no">CURLOPT_RETURNTRANSFER</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="c1">// 获取的信息以文件流的形式返回</span>
<span class="nv">$tmpInfo</span> <span class="o">=</span> <span class="nb">curl_exec</span><span class="p">(</span><span class="nv">$curl</span><span class="p">);</span> <span class="c1">// 执行操作</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">curl_errno</span><span class="p">(</span><span class="nv">$curl</span><span class="p">))</span> <span class="p">{</span>
<span class="k">echo</span> <span class="s1">'Errno'</span><span class="mf">.</span><span class="nb">curl_error</span><span class="p">(</span><span class="nv">$curl</span><span class="p">);</span><span class="c1">//捕抓异常</span>
<span class="p">}</span>
<span class="nb">curl_close</span><span class="p">(</span><span class="nv">$curl</span><span class="p">);</span> <span class="c1">// 关闭CURL会话</span>
<span class="nv">$backdata</span> <span class="o">=</span> <span class="nb">json_decode</span><span class="p">(</span><span class="nv">$tmpInfo</span><span class="p">,</span><span class="kc">true</span><span class="p">);</span>
<span class="k">return</span> <span class="nv">$backdata</span><span class="p">[</span><span class="s1">'text'</span><span class="p">];</span> <span class="c1">// 返回数据json格式</span>
<span class="p">}</span>
<span class="k">function</span> <span class="n">w_get</span><span class="p">(){</span>
<span class="nv">$url</span> <span class="o">=</span> <span class="s1">'https://yuri.gear.host/talk.php'</span><span class="p">;</span>
<span class="nv">$data</span><span class="p">[</span><span class="s1">'info'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'某地天气'</span><span class="p">;</span>
<span class="nv">$data</span><span class="p">[</span><span class="s1">'userid'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'Mayx_Mail'</span><span class="p">;</span>
<span class="nv">$retdata</span><span class="o">=</span><span class="nf">curl_post_https</span><span class="p">(</span><span class="nv">$url</span><span class="p">,</span><span class="nv">$data</span><span class="p">);</span>
<span class="nv">$data</span><span class="p">[</span><span class="s1">'info'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'某地明天天气'</span><span class="p">;</span>
<span class="nv">$retdata</span> <span class="o">=</span> <span class="nv">$retdata</span> <span class="mf">.</span> <span class="s2">"&lt;br&gt;"</span> <span class="mf">.</span><span class="nf">curl_post_https</span><span class="p">(</span><span class="nv">$url</span><span class="p">,</span><span class="nv">$data</span><span class="p">);</span>
<span class="nv">$data</span><span class="p">[</span><span class="s1">'info'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'某地后天天气'</span><span class="p">;</span>
<span class="nv">$retdata</span><span class="o">=</span><span class="nv">$retdata</span> <span class="mf">.</span> <span class="s2">"&lt;br&gt;"</span> <span class="mf">.</span><span class="nf">curl_post_https</span><span class="p">(</span><span class="nv">$url</span><span class="p">,</span><span class="nv">$data</span><span class="p">);</span>
<span class="k">return</span> <span class="nv">$retdata</span><span class="p">;</span><span class="c1">//返回json</span>
<span class="p">}</span>
<span class="k">function</span> <span class="n">xh_get</span><span class="p">(){</span>
<span class="nv">$url</span> <span class="o">=</span> <span class="s1">'https://yuri.gear.host/talk.php'</span><span class="p">;</span>
<span class="nv">$data</span><span class="p">[</span><span class="s1">'info'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'讲个笑话'</span><span class="p">;</span>
<span class="nv">$data</span><span class="p">[</span><span class="s1">'userid'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'Mayx_Mail'</span><span class="p">;</span>
<span class="nv">$retdata</span><span class="o">=</span><span class="nf">curl_post_https</span><span class="p">(</span><span class="nv">$url</span><span class="p">,</span><span class="nv">$data</span><span class="p">);</span>
<span class="k">return</span> <span class="nv">$retdata</span><span class="p">;</span><span class="c1">//返回json</span>
<span class="p">}</span>
<span class="k">function</span> <span class="n">xw_get</span><span class="p">(){</span>
<span class="c1">//RSS源地址列表数组 </span>
<span class="nv">$rssfeed</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s2">"http://www.people.com.cn/rss/it.xml"</span><span class="p">);</span>
<span class="k">for</span><span class="p">(</span><span class="nv">$i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="nv">$i</span><span class="o">&lt;</span><span class="nb">sizeof</span><span class="p">(</span><span class="nv">$rssfeed</span><span class="p">);</span><span class="nv">$i</span><span class="o">++</span><span class="p">){</span><span class="c1">//分解开始 </span>
<span class="nv">$buff</span> <span class="o">=</span> <span class="s2">""</span><span class="p">;</span>
<span class="nv">$rss_str</span><span class="o">=</span><span class="s2">""</span><span class="p">;</span>
<span class="c1">//打开rss地址并读取读取失败则中止 </span>
<span class="nv">$fp</span> <span class="o">=</span> <span class="nb">fopen</span><span class="p">(</span><span class="nv">$rssfeed</span><span class="p">[</span><span class="nv">$i</span><span class="p">],</span><span class="s2">"r"</span><span class="p">)</span> <span class="k">or</span> <span class="k">die</span><span class="p">(</span><span class="s2">"can not open </span><span class="nv">$rssfeed</span><span class="s2">"</span><span class="p">);</span>
<span class="k">while</span> <span class="p">(</span> <span class="o">!</span><span class="nb">feof</span><span class="p">(</span><span class="nv">$fp</span><span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
<span class="nv">$buff</span> <span class="mf">.</span><span class="o">=</span> <span class="nb">fgets</span><span class="p">(</span><span class="nv">$fp</span><span class="p">,</span><span class="mi">4096</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">//关闭文件打开 </span>
<span class="nb">fclose</span><span class="p">(</span><span class="nv">$fp</span><span class="p">);</span>
<span class="c1">//建立一个 XML 解析器 </span>
<span class="nv">$parser</span> <span class="o">=</span> <span class="nb">xml_parser_create</span><span class="p">();</span>
<span class="c1">//xml_parser_set_option -- 为指定 XML 解析进行选项设置 </span>
<span class="nb">xml_parser_set_option</span><span class="p">(</span><span class="nv">$parser</span><span class="p">,</span><span class="no">XML_OPTION_SKIP_WHITE</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span>
<span class="c1">//xml_parse_into_struct -- 将 XML 数据解析到数组$values中 </span>
<span class="nb">xml_parse_into_struct</span><span class="p">(</span><span class="nv">$parser</span><span class="p">,</span><span class="nv">$buff</span><span class="p">,</span><span class="nv">$values</span><span class="p">,</span><span class="nv">$idx</span><span class="p">);</span>
<span class="c1">//xml_parser_free -- 释放指定的 XML 解析器 </span>
<span class="nb">xml_parser_free</span><span class="p">(</span><span class="nv">$parser</span><span class="p">);</span>
<span class="nv">$j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="k">foreach</span> <span class="p">(</span><span class="nv">$values</span> <span class="k">as</span> <span class="nv">$val</span><span class="p">)</span> <span class="p">{</span>
<span class="nv">$tag</span> <span class="o">=</span> <span class="nv">$val</span><span class="p">[</span><span class="s2">"tag"</span><span class="p">];</span>
<span class="nv">$type</span> <span class="o">=</span> <span class="nv">$val</span><span class="p">[</span><span class="s2">"type"</span><span class="p">];</span>
<span class="nv">$value</span> <span class="o">=</span> <span class="nv">$val</span><span class="p">[</span><span class="s2">"value"</span><span class="p">];</span>
<span class="c1">//标签统一转为小写 </span>
<span class="nv">$tag</span> <span class="o">=</span> <span class="nb">strtolower</span><span class="p">(</span><span class="nv">$tag</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$tag</span> <span class="o">==</span> <span class="s2">"item"</span> <span class="o">&amp;&amp;</span> <span class="nv">$type</span> <span class="o">==</span> <span class="s2">"open"</span><span class="p">){</span>
<span class="nv">$is_item</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span><span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$tag</span> <span class="o">==</span> <span class="s2">"item"</span> <span class="o">&amp;&amp;</span> <span class="nv">$type</span> <span class="o">==</span> <span class="s2">"close"</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">//构造输出字符串 </span>
<span class="nv">$rss_str</span> <span class="mf">.</span><span class="o">=</span> <span class="s2">"&lt;a href='"</span><span class="mf">.</span><span class="nv">$link</span><span class="mf">.</span><span class="s2">"' target=_blank&gt;"</span><span class="mf">.</span><span class="nv">$title</span><span class="mf">.</span><span class="s2">"&lt;/a&gt;&lt;br /&gt;"</span><span class="p">;</span>
<span class="nv">$j</span><span class="o">++</span><span class="p">;</span>
<span class="nv">$is_item</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//仅读取item标签中的内容 </span>
<span class="k">if</span><span class="p">(</span><span class="nv">$is_item</span><span class="o">==</span><span class="mi">1</span><span class="p">){</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$tag</span> <span class="o">==</span> <span class="s2">"title"</span><span class="p">)</span> <span class="p">{</span><span class="nv">$title</span> <span class="o">=</span> <span class="nv">$value</span><span class="p">;}</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$tag</span> <span class="o">==</span> <span class="s2">"link"</span><span class="p">)</span> <span class="p">{</span><span class="nv">$link</span> <span class="o">=</span> <span class="nv">$value</span><span class="p">;}</span>
<span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="nv">$j</span> <span class="o">==</span> <span class="mi">20</span><span class="p">){</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">//输出结果 </span>
<span class="k">return</span> <span class="nv">$rss_str</span><span class="mf">.</span><span class="s2">"&lt;br /&gt;"</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nv">$to</span> <span class="o">=</span> <span class="s2">"mayx@outlook.com , unmayx@139.com"</span><span class="p">;</span>
<span class="nv">$subject</span> <span class="o">=</span> <span class="s2">"Mayx日报"</span><span class="p">;</span>
<span class="nv">$txt</span> <span class="o">=</span> <span class="s2">"
&lt;html&gt;
&lt;body&gt;
&lt;h1&gt;Mayx日报&lt;/h1&gt;&lt;hr&gt;Hi,今天是"</span> <span class="mf">.</span> <span class="nb">date</span><span class="p">(</span><span class="s2">"Y-m-d"</span><span class="p">)</span> <span class="mf">.</span> <span class="s2">",以下是今天的日报:&lt;br&gt;&lt;small&gt;
"</span> <span class="mf">.</span> <span class="nb">file_get_contents</span><span class="p">(</span><span class="s2">"http://mappi.000webhostapp.com/hitokoto/"</span><span class="p">)</span> <span class="mf">.</span> <span class="s2">"&lt;/small&gt;
&lt;h2&gt;天气预报&lt;/h2&gt;"</span> <span class="mf">.</span> <span class="nf">w_get</span><span class="p">()</span> <span class="mf">.</span> <span class="s2">"&lt;h2&gt;每日笑话&lt;/h2&gt;"</span> <span class="mf">.</span> <span class="nf">xh_get</span><span class="p">()</span> <span class="mf">.</span> <span class="s2">"&lt;h2&gt;今日新闻&lt;/h2&gt;"</span> <span class="mf">.</span> <span class="nf">xw_get</span><span class="p">()</span> <span class="mf">.</span> <span class="s2">"&lt;hr&gt;&lt;small&gt;"</span> <span class="mf">.</span> <span class="nb">file_get_contents</span><span class="p">(</span><span class="s2">"https://api.gushi.ci/all.txt"</span><span class="p">)</span> <span class="mf">.</span> <span class="s2">"&lt;/small&gt;&lt;br&gt;&lt;center&gt;Made By &lt;a href=</span><span class="se">\"</span><span class="s2">https://mabbs.github.io</span><span class="se">\"</span><span class="s2">&gt;Mayx&lt;/a&gt;&lt;/center&gt;
&lt;/body&gt;
&lt;/html&gt;
"</span><span class="p">;</span>
<span class="nv">$headers</span> <span class="o">=</span> <span class="s2">"MIME-Version: 1.0"</span> <span class="mf">.</span> <span class="s2">"</span><span class="se">\r\n</span><span class="s2">"</span> <span class="mf">.</span>
<span class="s2">"Content-type: text/html;charset=utf-8"</span> <span class="mf">.</span> <span class="s2">"</span><span class="se">\r\n</span><span class="s2">"</span> <span class="mf">.</span>
<span class="s2">"From: Mayx_Daily&lt;Mayx_Site&gt;"</span><span class="p">;</span>
<span class="nb">mail</span><span class="p">(</span><span class="nv">$to</span><span class="p">,</span><span class="nv">$subject</span><span class="p">,</span><span class="nv">$txt</span><span class="p">,</span><span class="nv">$headers</span><span class="p">);</span>
<span class="cp">?&gt;</span>
</code></pre></div></div>
<p>2018.11.12更新:增加了今日新闻)
2018.11.13更新限制新闻条数为前20条</p>
<h1 id="后记">
<a href="#后记"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 后记
</h1>
<p>说实话我更擅长用Linux Shell解决这种问题可惜网上好像没有免费的云主机听说Travis-CI好像也能搞这个事情但是说实话我英语并不是很好让我看懂短一点的文档还可以太长的就算了…… </p><p>
但我还是努力的使用Travis-CI解决了这个问题链接<a href="https://mayx.tk/">Mayx日报</a>
对了,运营商自己带的邮箱可以设定短信提醒,所以也可以搞成给手机发短信的形式,每天给自己发一条天气预报……那么这样的话,就把天气预报里的城市换成自己的城市吧! </p><p>
如果没有收到邮件,去垃圾邮件找找吧,然后把邮件地址设为白名单。 </p><p>
如果谁想试试这个功能,可以在下面给我留言,我在验证通过后会把你加到我的服务器里面的。</p></main>
<small style="display: block">tags: <a rel="category tag" class="p-category" href="/search.html?keyword=%E5%85%8D%E8%B4%B9"><em>免费</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E9%82%AE%E4%BB%B6"><em>邮件</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E6%97%A5%E6%8A%A5"><em>日报</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E5%BF%83%E5%BE%97"><em>心得</em></a> <span style="float: right;"><a href="https://gitlab.com/mayx/mayx.gitlab.io/tree/master/_posts/2018-11-10-email-sender.md">查看原始文件</a></span></small>
<h4 style="border-bottom: 1px solid #e5e5e5;margin: 2em 0 5px;">推荐文章</h4>
<p id="suggest-container">Loading...</p>
<script>
var suggest = $("#suggest-container");
$.get(BlogAPI + "/suggest?id=/2018/11/10/email-sender.html&update=" + lastUpdated.valueOf(), function (data) {
if (data.length) {
getSearchJSON(function (search) {
suggest.empty();
var searchMap = {};
for (var i = 0; i < search.length; i++) {
searchMap[search[i].url] = search[i];
}
var tooltip = $('<div class="content-tooltip"></div>').appendTo('body').hide();
for (var j = 0; j < data.length; j++) {
var item = searchMap[data[j].id];
if (item) {
var link = $('<a href="' + item.url + '">' + item.title + '</a>');
var contentPreview = item.content.substring(0, 100);
if (item.content.length > 100) {
contentPreview += "……";
}
link.hover(
function(e) {
tooltip.text($(this).data('content'))
.css({
top: e.pageY + 10,
left: e.pageX + 10
})
.show();
},
function() {
tooltip.hide();
}
).mousemove(function(e) {
tooltip.css({
top: e.pageY + 10,
left: e.pageX + 10
});
}).data('content', contentPreview);
suggest.append(link);
suggest.append(' - ' + item.date + '<br />');
}
}
});
} else {
suggest.html("暂无推荐文章……");
}
});
</script>
<br />
<div class="pagination">
<span class="prev">
<a href="/2018/11/04/mayx-think.html">
上一篇Mayx的创想
</a>
</span>
<br />
<span class="next">
<a href="/2018/12/02/freenet.html">
下一篇:对网络免费资源的感想
</a>
</span>
</div>
<!--[if !IE]> -->
<link rel="stylesheet" href="/assets/css/gitalk.css">
<script src="/assets/js/gitalk.min.js"></script>
<div id="gitalk-container"></div>
<script>
var gitalk = new Gitalk({
clientID: '36557aec4c3cb04f7ac6',
clientSecret: 'ac32993299751cb5a9ba81cf2b171cca65879cdb',
repo: 'mabbs.github.io',
owner: 'Mabbs',
admin: ['Mabbs'],
id: '/2018/11/10/email-sender', // Ensure uniqueness and length less than 50
distractionFreeMode: false, // Facebook-like distraction free mode
proxy: "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token"
})
gitalk.render('gitalk-container')
</script>
<!-- <![endif]-->
</section>
<!--[if !IE]> -->
<div id="landlord" style="left:5px;bottom:0px;">
<div class="message" style="opacity:0"></div>
<canvas id="live2d" width="500" height="560" class="live2d"></canvas>
<div class="live_talk_input_body">
<form id="live_talk_input_form">
<div class="live_talk_input_name_body" >
<input type="checkbox" id="load_this" />
<input type="hidden" id="post_id" value="/2018/11/10/email-sender.html" />
<label for="load_this">
<span style="font-size: 11px; color: #fff;">&#160;想问这篇文章</span>
</label>
</div>
<div class="live_talk_input_text_body">
<input name="talk" type="text" class="live_talk_talk white_input" id="AIuserText" autocomplete="off" placeholder="要和我聊什么呀?" />
<button type="submit" class="live_talk_send_btn" id="talk_send">发送</button>
</div>
</form>
</div>
<input name="live_talk" id="live_talk" value="1" type="hidden" />
<div class="live_ico_box" style="display:none;">
<div class="live_ico_item type_info" id="showInfoBtn"></div>
<div class="live_ico_item type_talk" id="showTalkBtn"></div>
<div class="live_ico_item type_music" id="musicButton"></div>
<div class="live_ico_item type_youdu" id="youduButton"></div>
<div class="live_ico_item type_quit" id="hideButton"></div>
<input name="live_statu_val" id="live_statu_val" value="0" type="hidden" />
<audio src="" style="display:none;" id="live2d_bgm" data-bgm="0" preload="none"></audio>
<input id="duType" value="douqilai" type="hidden" />
</div>
</div>
<div id="open_live2d">召唤伊斯特瓦尔</div>
<!-- <![endif]-->
<footer>
<p>
<small>Made with ❤ by Mayx<br />Last updated at 2026-02-04 22:28:32<br /> 总字数614622 - 文章数178 - <a href="/atom.xml" >Atom</a> - <a href="/README.html" >About</a></small>
</p>
</footer>
</div>
<script src="/assets/js/scale.fix.js"></script>
<!--[if !IE]> -->
<script src="/assets/js/main_new.js"></script>
<script src="/Live2dHistoire/live2d/js/live2d.js"></script>
<script src="/Live2dHistoire/live2d/js/message.js"></script>
<!-- <![endif]-->
</body>
</html>