<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "在Shell Script中寄送檔案當作郵件附件"]]></title>
		<link>https://www.andowson.com/posts/list/16.page</link>
		<description><![CDATA[Latest messages posted in the topic "在Shell Script中寄送檔案當作郵件附件"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>在Shell Script中寄送檔案當作郵件附件</title>
				<description><![CDATA[ 最近公司要辦研討會，需要寫一個報名網頁，收集參加研討會人員的資料，然後每天下午五點時將報名資料寄送給相關人員，由他們再處理後續的準備事項，所以需要處理下列需求： 
<br>
1.將資料庫中的報名資料匯出成為一個檔案，例如csv， 
<br>
2.然後再利用郵件附件方式寄送出去。 
<br>
3.定時自動執行 
<br>
<br>
第一項任務，因我們使用PostgreSQL 8.3，所以可以使用COPY指令來完成，例如報名資料表名字叫作attendee，為避免寫入權限的問題，我們將其寫入到/tmp/attendee.csv下，同時將其表頭一併輸出（注意：這項功能需要PostgreSQL 8.1版本以上才支援） 
<br>
[code]copy attendee to '/tmp/attendee.csv' csv header[/code] 
<br>
因為要使用COPY指令需要到postgres這個使用者的權限，故我們可以將上述指令存檔為export.sql存放到/var/lib/pgsql目錄下 
<br>
然後再利用su方式來完成： 
<br>
[code]su - postgres -c "psql seminar postgres -f /var/lib/pgsql/export.sql"[/code] 
<br>
第二項任務可利用mutt這個程式來執行 
<br>
[code]$ mutt -s "報名資料表" -a /tmp/attendee.csv pm@mycompany.com -c boss@mycompany.com,partner@other.com &lt; /dev/null[/code] 
<br>
如果沒有mutt可以透過yum -y install mutt來安裝 
<br>
<br>
完整的shell script如下: 
<br>
[code] 
<br>
#!/bin/bash 
<br>
su - postgres -c "psql seminar postgres -f /var/lib/pgsql/export.sql" 
<br>
mutt -s "報名資料表" -a /tmp/attendee.csv pm@mycompany.com -c boss@mycompany.com,partner@other.com &lt; /dev/null[/code] 
<br>
<br>
第三項任務就是排定cron job即可，在/etc/crontab中設定如下 
<br>
[code]01 17 * * * root /root/dump.sh[/code] 
<br>
參考資料： 
<br>
[url=http://www.shelldorado.com/articles/mailattachments.html]Sending files as mail attachments[/url] 
<br>]]></description>
				<guid isPermaLink="true">https://www.andowson.com/posts/preList/288/519.page</guid>
				<link>https://www.andowson.com/posts/preList/288/519.page</link>
				<pubDate><![CDATA[Tue, 2 Dec 2008 21:29:10]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:在Shell Script中寄送檔案當作郵件附件</title>
				<description><![CDATA[ 今天發現有些主機(REHL 3.3: mutt-1.4.1-3.4, RH Linux 7.3: mutt-1.2.5.1-1)使用mutt寄出來的信件寄件人會變成root&lt;&gt;，而被當成廣告信，接著遭到郵件伺服器的封鎖，因此有收不到信的狀況。 
<br>
解決方法就是指定寄件人From: 
<br>
<br>
[code]mutt -e 'my_hdr from:客服中心&lt;service@andowson.com&gt;' -s "測試資料" -a /tmp/test.txt somebody@andowson.com &lt; /dev/null[/code] 
<br>
<br>
這樣子就可以正常收到信了 
<br>
<br>
參考資料: 
<br>
http://pegasus923.pixnet.net/blog/post/33608243-%E5%9C%A8linux%E4%B8%8A%E5%88%A9%E7%94%A8mutt%E6%8C%87%E4%BB%A4%E5%AF%84%E9%99%84%E5%8A%A0%E6%AA%94mail]]></description>
				<guid isPermaLink="true">https://www.andowson.com/posts/preList/288/1186.page</guid>
				<link>https://www.andowson.com/posts/preList/288/1186.page</link>
				<pubDate><![CDATA[Thu, 29 Dec 2011 18:07:05]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
	</channel>
</rss>