2016-03-21 18 views
0

私は最近、ASP.Net Webサイトを従来のWindows 2003共有サーバーからWebアプリケーションとしてAzureに移行しました。私に電子メールを送信する私のVBScriptフォームは、移行後に動作を停止しました。 VBScriptの電子メールコードを稼働させるためにいくつかのアプローチを試みましたが、今まで運がなかった。問題の一部は、エラーの内容がわからないということです。古いVBScript ASP sendemailをAzureで動作させるにはどうすればよいですか?

私の質問の最初の部分は、どのように私のVBScript ASPページ上のASP.Netエラーを表示するのですか?私はweb.configにdebug = 'true'を設定しています。私はASPページ(下記参照)に設定しようとしましたが、これはうまくいきません。現在、私は何がうまくいかなかったのかを知らさずに電子メールを送信しようとした後、「内部エラー500」のページを取得します。

ここには、電子メールを送信し、問題の原因と思われるコードがあります。 C#でページ全体を書き直すことなく、Azureの下で動作するように変更できますか?

<%@ Language=VBScript Debug='true' %> 'Debug=true doesn't work 

Set Mailer = Server.CreateObject("Persits.MailSender") 
Mailer.Host = "mail.mydomain.com" ' Specify a valid SMTP server 
Mailer.From = Request.Form("AgentEmail") ' Specify sender's address 
Mailer.FromName = Request.Form("AgentsName") ' Specify sender's name 
Mailer.Port = 587 
Mailer.isHTML = True 

Mailer.AddAddress "[email protected]" 
Mailer.AddAddress "[email protected]" 
Mailer.AddAddress "[email protected]" 
Mailer.AddAddress Request.Form("AgentEmail") 
Mailer.Body = "stuff in my email" 


Mailer.Username = "[email protected]" 
Mailer.Password = "123456" 
On Error Resume Next 
Mailer.Send 
If Err <> 0 Then 
    Response.Write "Error encountered: " & Err.Description 
Else 
    Response.Write "Success" 
End If 

このコードは、以前のWindowsサーバーで機能しました。私はその部分がうまくいくように見えるので、HTMLのすべてを残しました。

答えて

0

。 。今後の参考のために、私はsmtpClientへのC#に私のコードを変換して使用して私の問題を解決することになったこれは、ここでは一般的な考え方は次のとおりです。

可能な解決策のように聞こえるが、私は私がしたいかわからない
SmtpClient smtpClient = new SmtpClient("mail.domain.com", 587); 
smtpClient.UseDefaultCredentials = false; 
smtpClient.Credentials = new System.Net.NetworkCredential(From, "password"); 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtpClient.Port = 587; 
MailMessage message = new MailMessage(); 

try 
{ 
    MailAddress fromAddress = new MailAddress(From, "Me"); 

    smtpClient.Host = "mail.domain.com"; 

    message.From = fromAddress; 
    message.To.Add(To); 
    message.Subject = Subject; 
    message.IsBodyHtml = true; 
    message.Body = Body; 

    smtpClient.Send(message); 
    Label_Results.Text = "Email successfully sent."; 
} 
catch (Exception ex) 
{ 
    ErrorLabel.Text = "<p>Send Email Failed:<p>" + ex.Message; 
} 
1

がインストールされていないDLLからオブジェクトをインスタンス化しようとしている:Server.CreateObject("Persits.MailSender")

のWeb Appsを使用するときは、任意の外部のCOMオブジェクトをインストールすることはできません。 1つのオプションは、仮想マシンを使用し、COM DLLをインストールすることです。あなたはAzureのWebサイト(およびないAzureのVM)を使用している、あなたはクラシックASPを使用することができると仮定すると、

+0

そのルートに行ってください。提案をいただきありがとうございます。私はCDOをまず試してみます。うまくいかない場合は、このオプションを見てみましょう。 –

2

あなたには、いくつかのフープを介してジャンプ提供は:https://khailiangtech.wordpress.com/2011/06/03/windows-azure-how-to-enable-classic-asp-support/

のWindows AzureのCDO(内蔵をサポートするように思われますCOM SMTPサービスで)あなたのコードはPersits.MailSenderを使用しています - <ServiceDefinition> XML経由でPersits.MailSenderコンポーネントをインストールすることは可能かもしれませんが、32/64ビット問題のためにこれをお勧めしません。

私が代わりにCDOを使用するようにスクリプトを変更することを提案、ここに参照です:http://theholmesoffice.com/using-sendgrid-with-classic-asp-to-send-emails/(ページがSendGridのSMTPサーバーを使用するためですが、あなたはどのSMTPサーバーを使用することができます(ちょうどポート25を使用していない)

+0

それは聞こえます私が探している答えのように。私はCDOを試し、それがうまくいくかどうかチェックします:) –

+0

@AlanMooreはまだサポートされているCDOですが、そのリンクから作業するようになったのですか?私は同じ目標を達成しようとしているので好奇心が強いです – Acoustic77

+0

@ Acoustic77私は決してこの質問に戻っていないことがわかります!いいえ、私はCDOを使用して終了しませんでした。私はSmtpClientを使用して終了しました。 –

関連する問題