C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ASP.NET:メール送信の方法


(過去ログ 68 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■39462 / inTopicNo.1)  ASP.NET:メール送信の方法
  
□投稿者/ Lisa (1回)-(2009/08/08(Sat) 15:49:57)

分類:[ASP.NET (VB)] 

ASP.NETのWebページからメール送信するプログラムを作りたいのですが、うまく出来ません。
間違ってる所を教えてください。

開発:VWD2005 VB
サーバ:ASP.NET2.0 + Ajax1.0
本:10日でおぼえるASP.NET2.0入門教室

↓このページを参考に作ってます。
http://www.atmarkit.co.jp/fdotnet/dotnettips/696jismail/jismail.html

【WebMail.aspx】
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub btnSend_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Send_JIS_Mail()
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>無題のページ</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        WebMail送信<br />
        <asp:Button ID="btnSend" runat="server" Text="メール送信" OnClick="btnSend_Click" /></div>
    </form>
</body>
</html>


【App_Codeの中にSend_JIS_mail.vb】
Imports System.Text
Imports System.Net.Mail

Private Function myEncode(ByVal str As String, ByVal enc As System.Text.Encoding) As String
    Dim base64str As String = Convert.ToBase64String(enc.GetBytes(str))
    Return String.Format("=?{0}?B?{1}?=", enc.BodyName, base64str)
End Function

Private Sub Send_JIS_Mail()
    Dim smtp As New SmtpClient()
    Dim msg As New MailMessage()
    Dim myEnc As Encoding = Encoding.GetEncoding("iso-2022-jp")

    ' 送信元
    msg.From = New System.Net.Mail.MailAddress( _
                    "lisa777@hoge.co.jp", myEncode("リサ", myEnc))
    ' 送信先
    msg.[To].Add(New System.Net.Mail.MailAddress( _
                    "lisa777@hoge.co.jp", myEncode("リサ", myEnc)))
    ' 件名
    msg.Subject = myEncode("EX-4:件名はabcです", myEnc)

    ' 本文
    Dim sBody As String = _
      "Send_JIS_Mail()" & Chr(13) & "" & Chr(10) & _
        " AlternateViewによる本文の指定を行いました。"
    Dim altView As AlternateView = _
      AlternateView.CreateAlternateViewFromString( _
        sBody, myEnc, System.Net.Mime.MediaTypeNames.Text.Plain)
    altView.TransferEncoding = _
      System.Net.Mime.TransferEncoding.SevenBit
    msg.AlternateViews.Add(altView)

    smtp.Host = "smtp.hoge.co.jp" ' SMTPサーバ
    smtp.Send(msg) ' メッセージを送信
End Sub

【VWD2005のエラーメッセージ】
Send_JIS_Mail.vbの4行目と9行目
名前空間のステートメントが無効です。
WebMail.aspxの8行目
名前'Send_JIS_Mail'は宣言されていません。

よろしくお願いします。

引用返信 編集キー/
■39463 / inTopicNo.2)  Re[1]: ASP.NET:メール送信の方法
□投稿者/ もりお (26回)-(2009/08/08(Sat) 16:52:11)
2009/08/08(Sat) 16:54:39 編集(投稿者)
No39462 (Lisa さん) に返信
> 【VWD2005のエラーメッセージ】
> Send_JIS_Mail.vbの4行目と9行目
> 名前空間のステートメントが無効です。
> WebMail.aspxの8行目
> 名前'Send_JIS_Mail'は宣言されていません。
 
メソッドはクラスの中に記述しなければいけないです。


解決策1.同じページクラスにメソッドを移動する

<script runat="server">
    Protected Sub btnSend_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Send_JIS_Mail()
    End Sub
    
    Private Function myEncode(ByVal str As String, ByVal enc As System.Text.Encoding) As String
        ...
    End Function

    Private Sub Send_JIS_Mail()
        ...
    End Sub
</script>


解決策2.新規にクラスを作成する

Class Mail
    Private Function myEncode(ByVal str As String, ByVal enc As System.Text.Encoding) As String
        ...
    End Function

    Public Sub Send_JIS_Mail()
        ...
    End Sub
End Class

<script runat="server">
    Protected Sub btnSend_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim m As New Mail()
        m.Send_JIS_Mail()
    End Sub
</script>

引用返信 編集キー/
■39464 / inTopicNo.3)  Re[2]: ASP.NET:メール送信の方法
□投稿者/ Lisa (2回)-(2009/08/08(Sat) 18:06:15)
No39463 (もりお さん) に返信
もりお様、ありがとうございます。
メールが届きました。感激です!!!

先ずは教えてもらった「解決策1」の方法でやってみました。
開発環境からも、サーバからもどちらからもメールが届きました。
こんなに簡単にメール送信プログラムが書けるのですね。ASP.NETって便利ですね。
このプログラムを基に色々改造してみます。ありがとうございました。

【WebMail.aspx】
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Net.Mail" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub btnSend_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Send_JIS_Mail()
    End Sub
    
    Private Function myEncode(ByVal str As String, ByVal enc As System.Text.Encoding) As String
        Dim base64str As String = Convert.ToBase64String(enc.GetBytes(str))
        Return String.Format("=?{0}?B?{1}?=", enc.BodyName, base64str)
    End Function

    Private Sub Send_JIS_Mail()
        Dim smtp As New SmtpClient()
        Dim msg As New MailMessage()
        Dim myEnc As Encoding = Encoding.GetEncoding("iso-2022-jp")

        ' 送信元
        msg.From = New System.Net.Mail.MailAddress( _
                        "lisa777@hoge.co.jp", myEncode("リサ", myEnc))
        ' 送信先
        msg.[To].Add(New System.Net.Mail.MailAddress( _
                        "lisa777@hoge.co.jp", myEncode("リサ", myEnc)))
        ' 件名
        msg.Subject = myEncode("サーバ:Webメール送信テスト", myEnc)

        ' 本文
        Dim sBody As String = _
          "こんにちは。サーバからの送信テスト" & Chr(13) & "" & Chr(10) & _
          Chr(13) & "" & Chr(10) & _
          " こんなに簡単にメールが送れるんですね。" & Chr(13) & "" & Chr(10) & _
          "感激です。"
        
        Dim altView As AlternateView = _
          AlternateView.CreateAlternateViewFromString( _
            sBody, myEnc, System.Net.Mime.MediaTypeNames.Text.Plain)
        altView.TransferEncoding = _
          System.Net.Mime.TransferEncoding.SevenBit
        msg.AlternateViews.Add(altView)

        smtp.Host = "smtp.hoge.co.jp" ' SMTPサーバ
        smtp.Send(msg) ' メッセージを送信
    End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>無題のページ</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        WebMail送信<br />
        <asp:Button ID="btnSend" runat="server" Text="メール送信" OnClick="btnSend_Click" /></div>
    </form>
</body>
</html>

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -