]> diplodocus.org Git - nmh/blobdiff - mts/smtp/smtp.c
Sigh, the return value from SSL_get_error() isn't suitable to give
[nmh] / mts / smtp / smtp.c
index 4fb6b1f4c9fdcb5f2d655f3f3cea714d747a80f5..b5e68fa1fa6b03cc90d8ea8e3f2ab4046febed45 100644 (file)
@@ -441,9 +441,22 @@ rclient (char *server, char *service)
 }
 
 int
-sm_winit (char *from)
+sm_winit (char *from, int smtputf8)
 {
-    switch (smtalk (SM_MAIL, "MAIL FROM:<%s>", from)) {
+    const char *const mail_parameters = smtputf8
+        ? " BODY=8BITMIME SMTPUTF8"
+        : "";
+
+    /* Just for information, if an attempt is made to send to an 8-bit
+       address without specifying SMTPUTF8, Gmail responds with
+       555 5.5.2 Syntax error.
+       Gmail doesn't require the 8BITMIME, but RFC 6531 Sec. 1.2 does. */
+    if (smtputf8  &&  (! EHLOset("8BITMIME") || ! EHLOset("SMTPUTF8"))) {
+       sm_end (NOTOK);
+       return RP_UCMD;
+    }
+
+    switch (smtalk (SM_MAIL, "MAIL FROM:<%s>%s", from, mail_parameters)) {
        case 250: 
            sm_addrs = 0;
            return RP_OK;