<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mailto &#8211; 記下來</title>
	<atom:link href="https://noter.tw/tag/mailto/feed/" rel="self" type="application/rss+xml" />
	<link>https://noter.tw</link>
	<description>一路上踩到的坑、遇到的問題，一點一滴記下來，希望能幫助到需要的人~</description>
	<lastBuildDate>Wed, 04 Dec 2019 01:05:50 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.3</generator>

<image>
	<url>https://noter.tw/wp-content/uploads/cropped-old-1130742_1920-1-32x32.jpg</url>
	<title>mailto &#8211; 記下來</title>
	<link>https://noter.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Crontab 取消寄信功能</title>
		<link>https://noter.tw/52/crontab-%e5%8f%96%e6%b6%88%e5%af%84%e4%bf%a1%e5%8a%9f%e8%83%bd/</link>
					<comments>https://noter.tw/52/crontab-%e5%8f%96%e6%b6%88%e5%af%84%e4%bf%a1%e5%8a%9f%e8%83%bd/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Wed, 19 Sep 2018 16:18:05 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[mailto]]></category>
		<category><![CDATA[syslog]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=52</guid>

					<description><![CDATA[<p>用了那麼久的 Ubuntu，這幾天才知道原來 crontab 執行的時候，會把一些錯誤訊息或是輸出寄發 email，發現這件事純粹是個意外 &#8230; 前幾天 Ubuntu 使用 Ssmtp 透過&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/52/crontab-%e5%8f%96%e6%b6%88%e5%af%84%e4%bf%a1%e5%8a%9f%e8%83%bd/" data-wpel-link="internal">Crontab 取消寄信功能</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>用了那麼久的 Ubuntu，這幾天才知道原來 crontab 執行的時候，會把一些錯誤訊息或是輸出寄發 email，發現這件事純粹是個意外 &#8230; </p>



<span id="more-52"></span>



<p>前幾天 <a rel="noreferrer noopener" href="https://noter.tw/50/ubuntu-%e4%bd%bf%e7%94%a8-ssmtp-%e9%80%8f%e9%81%8e-gmail-%e7%99%bc%e9%80%81-email/" target="_blank" data-wpel-link="internal">Ubuntu 使用 Ssmtp 透過 Gmail 發送 Email</a> 提到小蛙需要寄送登入通知，卻因為 VPS 提供的 IP 在 SPAM 清單中而一直無法成功，所以才找其他方式，使用 ssmtp 透過 Gmail 發送相關通知，在小蛙設定好 ssmtp 送信資料後，小蛙的 Gmail 收到一大堆信 &#8230; </p>



<p>一開始小蛙根本不知道發生什麼事，從信中找蛛絲馬跡，看到標題寫 Cron，跟 /var/log/syslog 裡的文字有點像，於是開始 Google crontab 寄信，結果 &#8230; 小蛙才疏學淺，竟然一直到現在才知道 crontab 會把有輸出執行結果的或是有問題的，發送 email 給 root，現在想想好像的確有這麼一回事，有時使用到一半會看到「您有新的 mail 在 xxxxx」的字樣，瞬間恍然大悟。 </p>



<p>要關掉這功能很簡單，參考 <a rel="noreferrer noopener nofollow external" href="https://www.digitalocean.com/community/questions/stop-the-php5-cron-emails" target="_blank" data-wpel-link="external" class="wpel-icon-right">Stop the php5 cron emails<span class="wpel-icon wpel-image wpel-icon-6"></span></a>，只要在 /etc/crontab 中加入一行設定就可以了。 </p>



<pre class="wp-block-preformatted wp-block-syntaxhighlighter-code">MAILTO=""</pre>



<p>小蛙做了這個設定後，卻還是會收到一個 PHP 執行的錯誤訊息，於是在資料夾中找到 /etc/cron.d/php 也有定期執行的程式，一樣加上「MAILTO=&#8221;&#8221;」，之後，這些訊息就只會輸出在 /var/log/syslog，不會寄發 email 囉！</p>



<p>如果還是有遇到其他的，不妨找找看是不是有漏掉其他 include 進檔案的 crontab 設定喔！</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/52/crontab-%e5%8f%96%e6%b6%88%e5%af%84%e4%bf%a1%e5%8a%9f%e8%83%bd/" data-wpel-link="internal">Crontab 取消寄信功能</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/52/crontab-%e5%8f%96%e6%b6%88%e5%af%84%e4%bf%a1%e5%8a%9f%e8%83%bd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JavaScript列印頁面及mailto寄信亂碼</title>
		<link>https://noter.tw/1704/javascript%e5%88%97%e5%8d%b0%e9%a0%81%e9%9d%a2%e5%8f%8amailto%e5%af%84%e4%bf%a1%e4%ba%82%e7%a2%bc/</link>
					<comments>https://noter.tw/1704/javascript%e5%88%97%e5%8d%b0%e9%a0%81%e9%9d%a2%e5%8f%8amailto%e5%af%84%e4%bf%a1%e4%ba%82%e7%a2%bc/#comments</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Wed, 28 Dec 2011 09:42:17 +0000</pubDate>
				<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[亂碼]]></category>
		<category><![CDATA[mailto]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[encodeURI]]></category>
		<category><![CDATA[java.net.URLEncoder.encode]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[列印]]></category>
		<guid isPermaLink="false">http://wazai.net/?p=1704</guid>

					<description><![CDATA[<p>接續前兩篇文章，從FancyBox到達申請表頁面後，對方要求可以透過(1)印表機列印申請表，(2)透過email寄送申請表。這篇文章小蛙要來說明怎麼透過JavaScript列印頁面以及用email寄送&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/1704/javascript%e5%88%97%e5%8d%b0%e9%a0%81%e9%9d%a2%e5%8f%8amailto%e5%af%84%e4%bf%a1%e4%ba%82%e7%a2%bc/" data-wpel-link="internal">JavaScript列印頁面及mailto寄信亂碼</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>接續前兩篇文章，從FancyBox到達申請表頁面後，對方要求可以透過(1)印表機列印申請表，(2)透過email寄送申請表。這篇文章小蛙要來說明怎麼透過JavaScript列印頁面以及用email寄送申請表，小蛙在處理mailto的時候遇到亂碼問題卡了一天，也會在這篇文章中說明。<br />
<span id="more-1704"></span></p>
<ul>
<li><strong><span style="color: #ff0000;">JavaScript列印頁面</span></strong></li>
</ul>
<p style="padding-left: 30px;">JavaScript列印頁面非常簡單，只需要一行就可以達成，更多詳細資料可以參考<a href="http://nievor.wordpress.com/2008/07/31/javascript_print_preview/" target="_blank" rel="noopener noreferrer nofollow external" data-wpel-link="external" class="wpel-icon-right">Javascript呼叫IE列印以及預覽列印的方法@小峰峰的筆記本<span class="wpel-icon wpel-image wpel-icon-6"></span></a>。</p>
<pre style="padding-left: 30px;">&amp;lt;input type="button" onclick="&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;print()&lt;/strong&gt;&lt;/span&gt;" value="列印申請表"&amp;gt;</pre>
<ul>
<li><span style="color: #ff0000;"><strong>JavaScript寄送電子郵件</strong></span></li>
</ul>
<p style="padding-left: 30px;">JavaScript寄送電子郵件指令也非常簡單，但是隱藏的問題其實還蠻多的，小蛙先介紹寄送電子郵件的指令。</p>
<pre style="padding-left: 30px;">&lt;input type="button" onclick="sendMail(true);" value="使用Big5寄送(Outlook)"&gt;
&lt;input type="button" onclick="sendMail(false);" value="使用UTF-8寄送"&gt;</pre>
<p style="padding-left: 30px;">小蛙用了sendMail()來讓使用者自行選擇要用哪種方式寄送等等再說明原因。JavaScript程式碼寄信程式碼如下，因為小蛙只用到簡單的寄件人、主旨及內容，更多詳細設定請參閱<a href="http://ant4html.blogspot.com/2009/01/mailto.html" target="_blank" rel="noopener noreferrer nofollow external" data-wpel-link="external" class="wpel-icon-right">用mailto寄信 @ 螞蟻的HTML<span class="wpel-icon wpel-image wpel-icon-6"></span></a>：</p>
<pre style="padding-left: 30px;">&lt;script type="text/javascript"&gt;
  // 基本寄信，沒有判斷編碼
  function sendMail(){
    var text_title = "這是一封透過JavsScript寄送的郵件主旨";
    var text_body  = "這是內文的部分。";
    sendmail = "mailto:xxxx@gmail.com?subject=" + text_title;
    sendmail += "&amp;body=" + text_body;
    location.href = sendmail;
  }
&lt;/script&gt;</pre>
<p style="padding-left: 30px;">如果要用到換行的話，必須使用<span style="color: #ff0000;"><strong>%0A</strong></span>。這個範例可能有些人跑起來是OK的，有些人卻得到亂碼，接下來小蛙要記錄一下自己的做法，也許有更好的做法，但時間緊迫只好先用這種特殊方式來解決。</p>
<ul>
<li><span style="color: #ff0000;"><strong>JavaScript mailto 亂碼解決</strong></span></li>
</ul>
<p style="padding-left: 30px;">目前小蛙找不到可以自動判斷要用什麼編碼的方法，也就是像上面的兩個按鈕，透過Big5寄送，或是透過UTF-8寄送，當小蛙以為就只有那麼簡單的時候又發現還要多一個條件判斷IE。Microsoft Outlook或Outlook Express會亂碼的原因是Outlook<strong><span style="color: #ff0000;">只能接受BIG5的編碼</span></strong>，但透過頁面location.href引導過去的參數會變成<span style="color: #ff0000;"><strong>UTF-8</strong></span>，所以不管怎麼試只要編碼不是BIG5在Outlook就一定會出現亂碼，但又找不到方法可以判斷客戶端在點了按鈕之後所呼叫的是Outlook還是透過Webmail寄送，像小蛙的電腦點了之後會跳出瀏覽器，透過gmail送出郵件，而不是使用Outlook。</p>
<p style="padding-left: 30px;">要確保送出的資料一定是用BIG5來編碼，在Java可以透過以下方式編碼。</p>
<pre style="padding-left: 30px;">java.net.URLEncoder.encode("一定要轉成BIG5編碼", "BIG5");</pre>
<p style="padding-left: 30px;">小蛙直接以自己的例子來說明，所有的頁面都是透過UTF-8編碼，包括使用者輸入的表單也是，這邊卡了一個問題是java.net.URLEncoder.encode()這個是Java的function，所以必須要在Server端才可以使用，也就是說使用者輸入完的資料沒有辦法直接透過java.net.URLEncoder.encode()來處理，這邊小蛙只好把所有的參數POST到另一頁sendMail.jsp專門處理亂碼及送出，以下是sendMail.jsp中Java編碼的部分。</p>
<pre style="padding-left: 30px;">String applyName = request.getParameter("applyName") == null ? "" : new String(request.getParameter("applyName").getBytes("ISO-8859-1"), "UTF-8");
String applyNameB = java.net.URLEncoder.encode("名稱："&nbsp;&nbsp; + applyName).replaceAll("[+]", " ");</pre>
<p style="padding-left: 30px;">編碼邏輯部分如下(以下是小蛙的dirty code，JavaScript跟Java夾雜，硬要分還是可以分的開，要怎麼處理就看自己的規畫囉！)：</p>
<pre style="padding-left: 30px;">&amp;lt;script type="text/javascript"&amp;gt;
&nbsp; var text_title = "&amp;lt;%=title%&amp;gt;";
&amp;lt;%
&nbsp; //也就是按下上面的「使用Big5寄送(Outlook)」
&nbsp; if("true".equals(big5)){
%&amp;gt;
&nbsp; &nbsp; &nbsp; // 這邊無論是哪個瀏覽器都務必要使用 &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;big5&lt;/strong&gt;&lt;/span&gt; 送出
&nbsp;&nbsp;&nbsp; &nbsp; text_title = "&amp;lt;%=title&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;B&lt;/strong&gt;&lt;/span&gt;%&amp;gt;";
&nbsp;&nbsp; &nbsp;&nbsp; text_body&nbsp; = "%0A" + ("&amp;lt;%=applyName&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;B&lt;/strong&gt;&lt;/span&gt;%&amp;gt;");
&nbsp; &nbsp; &nbsp; ....
&amp;lt;%
&nbsp; }else{
  &nbsp;&nbsp;  if("IE".equals(browser)){
%&amp;gt;
    &nbsp;&nbsp;    // 如果瀏覽器是IE，還要額外做encodeURI處理
      &nbsp;&nbsp;  text_title = &lt;strong&gt;&lt;span style="color: #ff0000;"&gt;encodeURI&lt;/span&gt;&lt;/strong&gt;(text_title);
&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;text_body&nbsp; = "&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;%0A&lt;/strong&gt;&lt;/span&gt;" + &lt;strong&gt;&lt;span style="color: #ff0000;"&gt;encodeURI&lt;/span&gt;&lt;/strong&gt;("名稱：&amp;lt;%=applyName%&amp;gt;");
  &nbsp;&nbsp;      ....
&amp;lt;%
    &nbsp; }else{
%&amp;gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Firefox, Chrome直接傳送即可
&nbsp;&nbsp;        text_title = (text_title);
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;text_body&nbsp; = "&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;%0A&lt;/strong&gt;&lt;/span&gt;" + ("物件名稱：&amp;lt;%=applyName%&amp;gt;");
&amp;lt;%
    &nbsp; }
&nbsp; }
%&amp;gt;
&nbsp; mail_str = "mailto:xxxxx@gmail.com?subject=" + text_title;
&nbsp; mail_str += "&amp;amp;body=" + text_body;
&nbsp; location.href = mail_str;
&amp;lt;/script&amp;gt;</pre>
<p>好吧！還有時間的話再來看看要不要把這些Code清乾淨一些&#8230;天啊！Web工程師最怕看到的應該就是亂碼，每次一遇到亂碼問題就會卡一段時間 &#8230; 還是希望瀏覽器的行為模式可以統一呀！上面的方法可以「手動」解決亂碼問題，讓使用者自己點選是否透過Outlook或是透過Webmail傳送，而在瀏覽器的特殊行為上小蛙也做了判斷，最有問題的IE特別隔離出來，希望之後能看到更好的做法&gt;&lt;。<br />
這方法有一些不足的地方<br />
(1)程式碼太醜，Java跟JavaScript全都混在一起(剛上面提到可以拆的開!!!)<br />
(2)沒辦法做到完全自動判斷，還要讓使用者點選<br />
(3)小蛙只測試了IE8, FF7.0.1, Chrome 16.0.912.63<br />
(4)如果使用者預設瀏覽器是IE，而透過非IE瀏覽器去點選寄送mail，有些情況可以，有些情況不行，這個部份處理起來真的沒完沒了，真正遇到再說了 = =<br />
打完收工，繼續處理其他工作，希望可以不要抱著工作跨年。</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/1704/javascript%e5%88%97%e5%8d%b0%e9%a0%81%e9%9d%a2%e5%8f%8amailto%e5%af%84%e4%bf%a1%e4%ba%82%e7%a2%bc/" data-wpel-link="internal">JavaScript列印頁面及mailto寄信亂碼</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/1704/javascript%e5%88%97%e5%8d%b0%e9%a0%81%e9%9d%a2%e5%8f%8amailto%e5%af%84%e4%bf%a1%e4%ba%82%e7%a2%bc/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
