XmlWebService(って今時言わないのかな)を叩いてその結果を見て正常なのかエラーなのかを携帯にメールで通知したくなったので、仕事ではRubyとかJavaばっかりなので、C#で作ってみました。
cronで動かすので、当然monoのC#です。
static void sendMail (string message, string subject)
{
		var smtp = new SmtpClient ("smtp.gmail.com", 587);
		smtp.EnableSsl = true;

		//ユーザー名は@gmail.comは含めない
		smtp.Credentials = new NetworkCredential ("gmailAccount", "password");
		ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
		
		var msg = new MailMessage ();
		msg.Body = message;
		msg.Subject = subject;
		msg.To.Add ("hoge@hoge"); 
		msg.From = new MailAddress ("hoge2@hoge");
		smtp.Send (msg);

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
これがないと、
System.Net.Mail.SmtpException: Message could not be sent. ---> System.IO.IOException: The authentication or decryption has failed. ---> System.InvalidOperationException: SSL authentication error: RemoteCertificateNotAvailable, RemoteCertificateChainErrors
と怒られてしまいます。
本当はエラーとかチェックするんでしょうけど、とりあえずここでは、trueを返して問題なしですよー、としてます。
これについては、
http://www.atmarkit.co.jp/fdotnet/dotnettips/867sslavoidverify/sslavoidverify.html
が分かりやすく解説してあります。