元アドレス:http://www.atmarkit.co.jp/fdotnet/dotnettips/457sendmail2/sendmail2.html


.NET TIPS

.NET Framework 2.0で電子メールを送信するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2006/06/09


 「TIPS:電子メールを送信するには?」では、SmtpMailクラス(System.Web.Mail名前空間)を使ってメールを送信する方法を紹介している。しかし、このSmtpMailクラスは.NET Framework 2.0ではObsoleteされてしまっており、以前に作成されたコードを動作させるための互換性目的で残されているだけだ。

 .NET Framework 2.0ではこの代わりに、System.Net.Mail名前空間が追加されており、これに所属するクラス群(具体的には、メールを送信する機能を提供するSmtpClientクラスなど)を利用することが推奨されている。

 そこで本稿では、SmtpClientクラスを用いて電子メールを送信する最もシンプルな方法を紹介する。

SmtpClientクラスを用いてメールを送信する方法

 SmtpClientクラスを用いて電子メールを送信するのに最低限必要となるのは、次の5つの情報である。

    • SMTPサーバ名(電子メールの送信を行うSMTPサーバの名前)
    • Fromアドレス(送信者のメール・アドレス)
    • Toアドレス(受信者のメール・アドレス)
    • 件名(いわゆる“Subject”)
    • 本文

 これらの情報を次のコード例のように指定して、プログラムを実行すれば、メールを送信できる。

using System.Net.Mail;

// 1. SMTPサーバ名
SmtpClient mailer = new SmtpClient("mail.sample.domain");
// メールの送信処理
mailer.Send(
  "from_address@sample.domain ",     // 2. Fromアドレス
  "to_address@sample.domain ",       // 3. Toアドレス
  "電子メールのタイトル",            // 4. 件名
  "本文をここに書く。");             // 5. 本文

Imports System.Net.Mail

' 1. SMTPサーバ名
Dim mailer As New SmtpClient("mail.sample.domain")
' メールの送信処理
' 2. Fromアドレス
' 3. Toアドレス
' 4. 件名
' 5. 本文
mailer.Send( _
  "from_address@sample.domain ", _
  "to_address@sample.domain ", _
  "電子メールのタイトル", _
  "本文をここに書く。")

SmtpClientクラスにより最もシンプルにメールを送信する方法(上:C#、下:VB)
SMTPサーバ名を文字列でSmtpClientクラスのコンストラクタに指定し、Fromアドレス、Toアドレス、件名、本文といった情報を文字列でSmtpClientオブジェクトのSendメソッドのパラメータに指定する。

 上記のコードを簡単に解説すると、SmtpClientクラスのコンストラクタのパラメータに文字列で「SMTPサーバ名」を指定し、残りの情報(Fromアドレス、Toアドレス、件名、本文)をSendメソッドの各パラメータに指定している。たったこれだけの記述でメールを送信することができる。

 SMTPサーバのポート番号が通常(つまり「25」)と異なる場合は、次のコードの例のように、SmtpClientクラスのコンストラクタの第2パラメータにその番号を指定すればよい。

SmtpClient mailer = new SmtpClient("mail.sample.domain", 1025);
……省略……
Dim mailer As New SmtpClient("mail.sample.domain", 1025)
……省略……
25番以外のポート番号の指定方法(上:C#、下:VB)
SmtpClientクラスのコンストラクタの第2パラメータにポート番号を指定できる。

 なお以上の例では、SmtpClientクラスのコンストラクタにSMTPサーバ名とポート番号を指定する方法を紹介したが、これらは次のプロパティから設定・取得することも可能だ。

  • SMTPサーバ名:SmtpClientオブジェクトのHostプロパティ
  • ポート番号:SmtpClientオブジェクトのPortプロパティ

 本稿で紹介したSendメソッドは同期処理を行うため、SMTPサーバへの接続が完了するか、(接続に失敗して)タイムアウトするまで処理が戻ってこない。これが問題となる場合には、非同期処理を行うSendAsyncメソッドを使う必要があるが、これについては後日公開する別のTIPSで紹介する。

 なお、SMTPサーバへの接続タイムアウト時間は既定で100秒(100000ミリ秒)となっているが、次のプロパティにより変更することもできる(ミリ秒単位で指定)。

  • 接続タイムアウト:SmtpClientオブジェクトのTimeoutプロパティ

 ここで紹介したSmtpClientクラスの使い方は最もシンプルなものだが、CC(カーボン・コピー)やBCC(ブラインド・カーボン・コピー)などに追加のメール・アドレスを指定したり、添付ファイルを追加したりして電子メールを送信することも可能だ。また、SMTPサーバへのアクセスでユーザー名とパスワードによる認証を行ったり、SSL(Secure Sockets Layer)接続を行ったりすることもできる。これらについては後日公開予定のTIPSで紹介する。

vs.net发送邮件(2.0)相关推荐

  1. 利用smtplib和email实现SMTP发送邮件 V2.0

    将之前利用smtplib和email实现SMTP发送邮件小程序进行重构. 发现了email.mime.multipart类两个使用上的小问题: MIMEMultipart类要修改参数,不能直接使用赋值 ...

  2. SpringBoot2.0基础案例分类总结,后续更新计划说明

    一.基础案例 1.基础案例概览 历时一个半月,SpringBoot2.0基础案例的文章基本更新完毕了,基础案例包含了SpringBoot的基础教程,高级应用,日志配置,数据库使用,事务管理等.关于Sp ...

  3. jenkins + jmeter +ant 发送邮件失败

    阿菠萝阿瑶 </div><!--end: blogTitle 博客的标题和副标题 --> <div id="navigator"> 博客园 首页 ...

  4. 估算带卷积核二分类0,3的网络的收敛时间和迭代次数

    制作一个网络分类minst的0和3求出这网络的迭代次数曲线表达式n(δ),和准确率表达式p-max(δ),用预期准确率去估算n,并推算需要的时间. 将minst的28*28的图片缩小到9*9,网络用一 ...

  5. 自动化测试框架搭建-邮件-5

    在前面生成自动化框架中讲解了一步步生成日志,报告.生成测试报告之后需要提交给他人查看,自然需要用到右键发送的功能,这里学习一下smtplib 和 email 库. 在utils中创建mail.py,初 ...

  6. 用python发送email

    #coding:utf-8from email.header import Headerfrom email.mime.text import MIMETextfrom email.utils imp ...

  7. 聚宽JQData说明书

    由于内容较多,可使用Ctrl+F搜索您需要的数据. 注意:query函数的更多用法详见:sqlalchemy.orm.query.Query对象 JQData是什么 JQData是聚宽数据团队专门为金 ...

  8. 仿牛客网项目第二章:开发社区登录模块(详细步骤和思路)

    目录 1. 发送邮件 1.0 三步走 1.1 邮箱设置 1.2 Spring Email 1.3 模板引擎 1.4 发送邮件的过程 1.5 检验发送邮件的过程 2. 开发注册功能 2.0 注册功能的步 ...

  9. Linux学习 邮件

    邮件 一.先做DNS解析 (1)第一台主机 1.hostnamectl  set-hostname westos.mail.com systemctl  stop  firewalld 配置ip为17 ...

  10. 再来IOS开发小知识点总结

    一.获取当前日期和星期 // get the current date NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [d ...

最新文章

  1. linux中sort命令实例,Linux中文本处理工具之sort命令详解
  2. 为什么要打jar_生活在西北的兰州人过春节为什么要打太平鼓?
  3. 单一docker主机网络
  4. 鸿蒙系统明年上市巧,鸿蒙系统官网下载-鸿蒙系统官网下载手机版 v2.0下载-955游戏网...
  5. Validation-jQuery表单验证插件使用方法
  6. neo4j——图数据库初探 - JDream314的专栏 - 博客频道 - CSDN.NET
  7. 【干货】2014年值得仔细研究的十大神级文案
  8. 1027:输出浮点数
  9. python渲染html 库_在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
  10. 机器学习——常用算法的总结
  11. utf8 和utf8mb4 的区别
  12. Exchange Server 2016体验
  13. 基于php技术的毕业设计管理系统的研究与实现,基于PHP的图书管理系统设计与实现毕业论文.DOC...
  14. 计算机房等电位接地规范,一个实例全面讲解机房如何做防雷接地?
  15. 聊一聊,android程序员前景如何
  16. 几款在线脑图制作工具
  17. 译: 进化的系统需要进化的系统工程
  18. python爬取B站视频弹幕分析并制作词云
  19. 天啦撸!打印日志竟然只晓得 Log4j?
  20. 最新!Xmind2020安装教程

热门文章

  1. 【夏目鬼鬼分享】RabbitMQ路由模式
  2. 【ECshop错误集锦】解决ECShop发送邮件提示:Error: need RCPT command
  3. win7系统的两种硬盘格式mbr和gpt怎么选择?
  4. 多系统管理问题显现 一体化管理走俏
  5. iPhone的解锁、越狱、激活、固件等等是什么意思,有什么分别?
  6. recyclerview嵌套recyclerview
  7. Kubernetes 基于ceph rbd生成pv
  8. 斗破手游服务器显示未开放,《斗破苍穹》手游新手常见问题处理方案合集
  9. 深入分析:代理游戏真的可以赚钱吗?
  10. Kubernetes 调度器实现初探