Jump to content
meety

Send email to OutLook via SMTP

Recommended Posts

Hello, code.au3I send an email to Outlook mailbox through the following code, the Chinese in the body of the email will be confused, and the Chinese in the email title can be displayed normally.

Please help to solve this problem, thank you!

 

#include <file.au3>


$s_SmtpServer = "" ;address for the smtp-server to use
$s_FromName = "" ;name from who the email was sent
$s_FromAddress = "" ;address from where the mail should come
$s_ToAddress = "" ;destination address of the email
$s_Subject = "" ;subject from the email
$as_Body = "" ;the messagebody from the mail
$s_AttachFiles = "" ;the file you want to attach
$s_CcAddress = "" ;address for cc
$s_BccAddress = "" ;address for bcc
$s_Username = "" ;username for the account used from where the mail gets sent
$s_Password = "" ;password for the account used from where the mail gets sent
$IPPort = 25 ;enables/disables secure socket layer sending
$ssl = 0


Func sendmail()
        Global $oMyRet[2]
        Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
        $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
        If @error Then
                MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
        EndIf
    EndFunc   ;==>sendmail
    
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Global $oMyRet[2]
 
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
    $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body,"<") and StringInStr($as_Body,">") Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull ($S_Files2Attach[$x])
            If FileExists($S_Files2Attach[$x]) Then
                $objEmail.AddAttachment ($S_Files2Attach[$x])
            Else
                $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
                SetError(1)
                return 0
            EndIf
        Next
    EndIf
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
    If $s_Username <> "" Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $Ssl Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
;Update settings
    $objEmail.Configuration.Fields.Update
; Sent the Message
    $objEmail.Send
    if @error then
        SetError(2)
        return $oMyRet[1]
    EndIf
EndFunc ;==>_INetSmtpMailCom
 
Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description,3)
    ConsoleWrite("### COM Error !    Number: " & $HexNumber & "    ScriptLine: " & $oMyError.scriptline & "    Description:" & $oMyRet[1] & @LF)
    SetError(1); something to check for when this function returns
    Return
EndFunc ;==>MyErrFunc

 

Edited by Jos

Share this post


Link to post
Share on other sites
49 minutes ago, Jos said:

到底是什么意思? 

sorry,The Chinese part is messy code

Share this post


Link to post
Share on other sites
On 2020/11/6 at PM5点52分, Jos said:

到底是什么意思? 

Sorry,the Chinese part is MessyCode. why is that?

Share this post


Link to post
Share on other sites
On 2020/11/8 at AM8点26分, Zedna said:

在CDO.Message中,您可以像这样显式设置“ codepage”(这是针对捷克语的)

$ objEmail 。身体部位。ContentTransferEncoding  =  “ 8bit” 
$ objEmail 。身体部位。CharSet  =  “ windows-1250

 

thanks for your help

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...