fixes #9728
This commit is contained in:
parent
4efbde84ee
commit
4929f74023
1 changed files with 16 additions and 6 deletions
|
|
@ -71,7 +71,12 @@ when not defined(ssl):
|
||||||
type PSSLContext = ref object
|
type PSSLContext = ref object
|
||||||
let defaultSSLContext: PSSLContext = nil
|
let defaultSSLContext: PSSLContext = nil
|
||||||
else:
|
else:
|
||||||
let defaultSSLContext = newContext(verifyMode = CVerifyNone)
|
var defaultSSLContext {.threadvar.}: SSLContext
|
||||||
|
|
||||||
|
proc getSSLContext(): SSLContext =
|
||||||
|
if defaultSSLContext == nil:
|
||||||
|
defaultSSLContext = newContext(verifyMode = CVerifyNone)
|
||||||
|
result = defaultSSLContext
|
||||||
|
|
||||||
proc createMessage*(mSubject, mBody: string, mTo, mCc: seq[string],
|
proc createMessage*(mSubject, mBody: string, mTo, mCc: seq[string],
|
||||||
otherHeaders: openarray[tuple[name, value: string]]): Message =
|
otherHeaders: openarray[tuple[name, value: string]]): Message =
|
||||||
|
|
@ -109,20 +114,22 @@ proc `$`*(msg: Message): string =
|
||||||
result.add(msg.msgBody)
|
result.add(msg.msgBody)
|
||||||
|
|
||||||
proc newSmtp*(useSsl = false, debug=false,
|
proc newSmtp*(useSsl = false, debug=false,
|
||||||
sslContext = defaultSslContext): Smtp =
|
sslContext: SSLContext = nil): Smtp =
|
||||||
## Creates a new ``Smtp`` instance.
|
## Creates a new ``Smtp`` instance.
|
||||||
new result
|
new result
|
||||||
result.debug = debug
|
result.debug = debug
|
||||||
|
|
||||||
result.sock = newSocket()
|
result.sock = newSocket()
|
||||||
if useSsl:
|
if useSsl:
|
||||||
when compiledWithSsl:
|
when compiledWithSsl:
|
||||||
sslContext.wrapSocket(result.sock)
|
if sslContext == nil:
|
||||||
|
getSSLContext().wrapSocket(result.sock)
|
||||||
|
else:
|
||||||
|
sslContext.wrapSocket(result.sock)
|
||||||
else:
|
else:
|
||||||
{.error: "SMTP module compiled without SSL support".}
|
{.error: "SMTP module compiled without SSL support".}
|
||||||
|
|
||||||
proc newAsyncSmtp*(useSsl = false, debug=false,
|
proc newAsyncSmtp*(useSsl = false, debug=false,
|
||||||
sslContext = defaultSslContext): AsyncSmtp =
|
sslContext: SSLContext = nil): AsyncSmtp =
|
||||||
## Creates a new ``AsyncSmtp`` instance.
|
## Creates a new ``AsyncSmtp`` instance.
|
||||||
new result
|
new result
|
||||||
result.debug = debug
|
result.debug = debug
|
||||||
|
|
@ -130,7 +137,10 @@ proc newAsyncSmtp*(useSsl = false, debug=false,
|
||||||
result.sock = newAsyncSocket()
|
result.sock = newAsyncSocket()
|
||||||
if useSsl:
|
if useSsl:
|
||||||
when compiledWithSsl:
|
when compiledWithSsl:
|
||||||
sslContext.wrapSocket(result.sock)
|
if sslContext == nil:
|
||||||
|
getSSLContext().wrapSocket(result.sock)
|
||||||
|
else:
|
||||||
|
sslContext.wrapSocket(result.sock)
|
||||||
else:
|
else:
|
||||||
{.error: "SMTP module compiled without SSL support".}
|
{.error: "SMTP module compiled without SSL support".}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue