1

我正在尝试使用 CDO 通过 Volusion Windows 服务器发送电子邮件。我编写的 ASP 脚本在 GoDaddy Windows 服务器上运行良好,所以我知道脚本是正确的,但它不能通过 Volusion 运行。在那个脚本中,我使用了 GoDaddy 的relay-hosting.secureserver.netSMTP 服务器来发送电子邮件,它在 GoDaddy 服务器上运行良好,但在 Volusion 上却不行。

我已经尝试了几个 SMTP 服务器。Volusion 在此处提供有关其邮件服务器的文档:

https://support.volusion.com/article/connecting-my-volusion-e-mail-account

我已经在脚本中尝试了带 SSL 和不带 SSL 的 SMTP 服务器(并且还尝试了所有不同的端口)。

我想知道 Volusion 服务器是否不支持使用 CDO 发送电子邮件的功能?有没有办法在不访问 cPanel、WHM 或任何核心文件的情况下检查服务器是否支持 CDO?使用 Volusion,它们只允许您访问部分 FTP。

谢谢你的帮助!

编辑

这是我使用的有效代码:

<%
sendUrl="http://schemas.microsoft.com/cdo/configuration/sendusing"
smtpUrl="http://schemas.microsoft.com/cdo/configuration/smtpserver"

' Set the mail server configuration
Set objConfig=CreateObject("CDO.Configuration")
objConfig.Fields.Item(sendUrl)=2
objConfig.Fields.Item(smtpUrl)="relay-hosting.secureserver.net"
' Server port (typically 25)
objConfig.Fields.Update

' Create and send the mail
Set myMail=CreateObject("CDO.Message")
' Use the config object created above
Set myMail.Configuration=objConfig
myMail.From="test@test.com"
myMail.To="test@test.com"
myMail.Subject = "Test Subject"
myMail.HTMLBody = "Test"
myMail.Send                 

Set myMail = Nothing

response.write "Success!!"
%>

当我运行代码时,我显然已经更新了那些电子邮件地址。

编辑

要回答评论中的问题,我的服务器版本是:

微软-IIS/6.0

4

2 回答 2

2

要回答您最初的问题,支持如何检查 CDO。

Object Required这是一个在实例化 CDO COM 对象时检查错误(或与此相关的任何错误)的快速示例。

Dim cdo, is_cdosupported

On Error Resume Next
Err.Clear
Set cdo = Server.CreateObject("CDO.Configuration")
is_cdosupported = (Err.Number <> 0)
On Error Goto 0

If is_cdosupported Then
  Call Response.Write("CDO is supported")
Else
  Call Response.Write("CDO not supported")
End If

在谷歌上搜索

在评论了几次之后决定深入研究Volusion(必须承认我没有遇到过,并且在 Google 中快速搜索后发现了这个链接。

引用VSMTP 密钥

提供了一个特殊的 ASP 类,用于 Volusion 的内置发送邮件组件 VSMTP。

您可以使用此类为您的商店使用 ASP 创建自己的发送邮件解决方案。请注意,本文中提供的信息适用于高级用户。该解决方案提供了通过 Volusion 标准的基于 POP 或基于 webmail 的解决方案发送电子邮件的替代方案。

如果您使用 Volusion 的标准电子邮件托管资源(POP、IMAP 或 Webmail),则无需更新您的商店或my.volusion.com帐户中的任何功能。

要在 Volusion 商店中使用 VSMTP 组件,您需要下载 Volusion 的 VSMTP ASP 类

Object Required尝试实例化 CDO 组件时遇到的 ASP 组件错误来看,我会说Volusion 服务器不支持 CDO

有一个使用 VSMTP ASP 类的简单示例

<%
Dim mailer
Set mailer = new vsmtp
mailer.VsmtpKey = "65539C7A-525C-4CB7-B36B-BFBBDD332DD6"
mailer.EmailSubject = "Test Subject"
mailer.EmailFrom = "test@testdomain.com"
mailer.EmailTo = "test@testdomain.com"
mailer.TextBody = "Hello World!"
mailer.HTMLBody = "Hello World"
mailer.AddAttachment Server.MapPath("/v/test1.txt")
mailer.AddAttachment "/v/test2.txt"
mailer.Send()
%>

最好的办法是调整现有脚本以使用 Volusion 支持的 VSMTP 定制类。

查看 VSMTP ASP 类,它看起来像是POST对 ASP 端点 ( vsmtp.asp) 的简单包装。

<%
Class vsmtp
    Public VsmtpKey
    Public EmailSubject
    Public EmailFrom
    Public EmailTo
    Public TextBody
    Public HTMLBody
    Private Attachment
    Private AttachmentFolder
    Public Sub AddAttachment(ByRef FilePath)
        If AttachmentFolder = "" Then
            AttachmentFolder = Server.MapPath("/v")
        End If
        If StrComp(Left(FilePath,Len(AttachmentFolder)),AttachmentFolder,vbTextCompare) = 0 Then
            FilePath = Replace(Mid(FilePath,Len(AttachmentFolder)-1),"\","/")
        End If
        If StrComp(Left(FilePath,3),"/v/",vbTextCompare) <> 0 Or InStr(FilePath,",") > 0 Then
            Err.Raise 512, "vsmtp.AddAttachment", "Invalid Attachment Path"
        End If
        If IsEmpty(Attachment) Then
            Attachment = FilePath
        Else
            Attachment = Attachment & "," & FilePath
        End If
    End Sub
    Public Sub Send()
        Dim HTTPRequest
        Set HTTPRequest = CreateObject("WinHTTP.WinHTTPRequest.5.1")
        HTTPRequest.Open "POST", "http://" & Request.ServerVariables("LOCAL_ADDR") & "/vsmtp.asp", False
        HTTPRequest.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        HTTPRequest.SetRequestHeader "Host", Request.ServerVariables("SERVER_NAME")
        HTTPRequest.Send _
            "VsmtpKey=" & Server.URLEncode(VsmtpKey) &_
            "&Subject=" & Server.URLEncode(EmailSubject) &_
            "&FromEmailAddress=" & Server.URLEncode(EmailFrom) &_
            "&ToEmailAddress=" & Server.URLEncode(EmailTo) &_
            "&Body_HTML=" & Server.URLEncode(HTMLBody) &_
            "&Body_TextOnly=" & Server.URLEncode(TextBody) &_
            "&Attachment_CSV=" & Server.URLEncode(Attachment)
        If HTTPRequest.ResponseText <> "True" Then
            Set HTTPRequest = Nothing
            Err.Raise 8, "vsmtp.Send", "Unable to send email. Check logs for details."
        End If
        Set HTTPRequest = Nothing
    End Sub
End Class
%>
于 2014-05-12T14:20:36.130 回答
0

简短的回答,你不能。您将收到一条错误消息,指出Access is denied. VSMTP 是直接从 Volusion 发送电子邮件的唯一替代方法,但是,您只能从他们的 SMTP 服务器发送,并且选项(例如标头)仅限于提供的内容。

于 2014-05-19T12:53:11.880 回答