mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-03 12:21:35 +00:00
Improve conversation mode in gam sendmail
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
This commit is contained in:
@@ -10,6 +10,13 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|||||||
|
|
||||||
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
||||||
|
|
||||||
|
### 7.36.02
|
||||||
|
|
||||||
|
Added option `threadid <String>` to `gam [<UserTypeEntity>] sendemail` that causes Gmail to recognize the message
|
||||||
|
in conversation mode in for the user sending the message.
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Send-Email#conversation-mode
|
||||||
|
|
||||||
### 7.36.01
|
### 7.36.01
|
||||||
|
|
||||||
Fixed bug in `gam info|print|show policies` where the `policyQuery/query` field was not displayed.
|
Fixed bug in `gam info|print|show policies` where the `policyQuery/query` field was not displayed.
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
```
|
```
|
||||||
gamteam@server:/Users/gamteam$ rm -f /Users/gamteam/GAMConfig/oauth2.txt
|
gamteam@server:/Users/gamteam$ rm -f /Users/gamteam/GAMConfig/oauth2.txt
|
||||||
gamteam@server:/Users/gamteam$ gam version
|
gamteam@server:/Users/gamteam$ gam version
|
||||||
GAM 7.36.01 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.36.02 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.3 64-bit final
|
Python 3.14.3 64-bit final
|
||||||
macOS Tahoe 26.3.1 arm64
|
macOS Tahoe 26.3.1 arm64
|
||||||
@@ -1034,7 +1034,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
```
|
```
|
||||||
C:\>del C:\GAMConfig\oauth2.txt
|
C:\>del C:\GAMConfig\oauth2.txt
|
||||||
C:\>gam version
|
C:\>gam version
|
||||||
GAM 7.36.01 - https://github.com/GAM-team/GAM - pythonsource
|
GAM 7.36.02 - https://github.com/GAM-team/GAM - pythonsource
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.3 64-bit final
|
Python 3.14.3 64-bit final
|
||||||
Windows 11 10.0.26200 AMD64
|
Windows 11 10.0.26200 AMD64
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
- [Send an email to users](#send-an-email-to-users)
|
- [Send an email to users](#send-an-email-to-users)
|
||||||
- [Simple `replace <Tag> <String>` processing](Tag-Replace)
|
- [Simple `replace <Tag> <String>` processing](Tag-Replace)
|
||||||
- [Example](#example)
|
- [Example](#example)
|
||||||
- [Reply to an email](#reply-to-an-email)
|
- [Conversation mode](#conversation-mode)
|
||||||
|
|
||||||
## Note
|
## Note
|
||||||
Thanks to @bousquf for the following enhancement. You want to send a message from an authorized group
|
Thanks to @bousquf for the following enhancement. You want to send a message from an authorized group
|
||||||
@@ -215,14 +215,14 @@ Configure it at Admin Console > Apps > Google Workspace > Gmail > Routing > SMTP
|
|||||||
gam sendemail [recipient|to] <RecipientEntity>
|
gam sendemail [recipient|to] <RecipientEntity>
|
||||||
[from <EmailAddress>] [mailbox <EmailAddress>] [replyto <EmailAddress>]
|
[from <EmailAddress>] [mailbox <EmailAddress>] [replyto <EmailAddress>]
|
||||||
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
||||||
[subject <String>]
|
[subject <String>] [<MessageContent>]
|
||||||
[<MessageContent>]
|
|
||||||
(replace <Tag> <String>)*
|
(replace <Tag> <String>)*
|
||||||
(replaceregex <REMatchPattern> <RESubstitution> <Tag> <String>)*
|
(replaceregex <REMatchPattern> <RESubstitution> <Tag> <String>)*
|
||||||
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
||||||
(embedimage <FileName> <String>)*
|
(embedimage <FileName> <String>)*
|
||||||
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
||||||
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
||||||
|
[threadid <String>]
|
||||||
```
|
```
|
||||||
By default, emails will be sent from the admin user named in oauth2.txt, override this with the `from <EmailAddress>` option.
|
By default, emails will be sent from the admin user named in oauth2.txt, override this with the `from <EmailAddress>` option.
|
||||||
|
|
||||||
@@ -273,14 +273,14 @@ You can specify additional recipients, e.g., help desk personnel.
|
|||||||
gam sendemail [recipient|to] <RecipientEntity> [from <EmailAddress>]
|
gam sendemail [recipient|to] <RecipientEntity> [from <EmailAddress>]
|
||||||
[replyto <EmailAddress>]
|
[replyto <EmailAddress>]
|
||||||
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
||||||
[subject <String>]
|
[subject <String>] [<MessageContent>]
|
||||||
[<MessageContent>]
|
|
||||||
(replace <Tag> <String>)*
|
(replace <Tag> <String>)*
|
||||||
(replaceregex <REMatchPattern> <RESubstitution> <Tag> <String>)*
|
(replaceregex <REMatchPattern> <RESubstitution> <Tag> <String>)*
|
||||||
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
||||||
(embedimage <FileName> <String>)*
|
(embedimage <FileName> <String>)*
|
||||||
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
||||||
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
||||||
|
[threadid <String>]
|
||||||
```
|
```
|
||||||
|
|
||||||
By default, emails will be sent from the admin user named in oauth2.txt, override this with the `from <EmailAddress>` option.
|
By default, emails will be sent from the admin user named in oauth2.txt, override this with the `from <EmailAddress>` option.
|
||||||
@@ -354,14 +354,14 @@ gam csv Users.csv gam sendemail "~personal" subject "Your new #domain# account`
|
|||||||
gam <UserTypeEntity> sendemail recipient|to <RecipientEntity>
|
gam <UserTypeEntity> sendemail recipient|to <RecipientEntity>
|
||||||
[replyto <EmailAddress>]
|
[replyto <EmailAddress>]
|
||||||
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
||||||
[subject <String>]
|
[subject <String>] [<MessageContent>]
|
||||||
[<MessageContent>]
|
|
||||||
(replace <Tag> <String>)*
|
(replace <Tag> <String>)*
|
||||||
(replaceregex <REMatchPattern> <RESubstitution> <Tag> <String>)*
|
(replaceregex <REMatchPattern> <RESubstitution> <Tag> <String>)*
|
||||||
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
||||||
(embedimage <FileName> <String>)*
|
(embedimage <FileName> <String>)*
|
||||||
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
||||||
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
||||||
|
[threadid <String>]
|
||||||
```
|
```
|
||||||
Emails will be sent from the users in `<UserTypeEntity>` to the recipients in `<RecipientEntity>`.
|
Emails will be sent from the users in `<UserTypeEntity>` to the recipients in `<RecipientEntity>`.
|
||||||
|
|
||||||
@@ -396,14 +396,14 @@ Your command line will have: `embedimage file1.jpg image1 embedimage file2.jpg i
|
|||||||
gam <UserTypeEntity> sendemail from <EmailAddress>
|
gam <UserTypeEntity> sendemail from <EmailAddress>
|
||||||
[replyto <EmailAddress>]
|
[replyto <EmailAddress>]
|
||||||
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
||||||
[subject <String>]
|
[subject <String>] [<MessageContent>]
|
||||||
[<MessageContent>]
|
|
||||||
(replace <Tag> <String>)*
|
(replace <Tag> <String>)*
|
||||||
(replaceregex <REMatchPattern> <RESubstitution> <Tag> <String>)*
|
(replaceregex <REMatchPattern> <RESubstitution> <Tag> <String>)*
|
||||||
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
||||||
(embedimage <FileName> <String>)*
|
(embedimage <FileName> <String>)*
|
||||||
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
||||||
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
||||||
|
[threadid <String>]
|
||||||
```
|
```
|
||||||
Emails will be sent to the users in `<UserTypeEntity>`.
|
Emails will be sent to the users in `<UserTypeEntity>`.
|
||||||
|
|
||||||
@@ -453,11 +453,28 @@ User: user1@domain.com, Send Email to 1 Recipient
|
|||||||
Recipient: user2@domain.com, Message: Test, Email Sent: 17677cdfbe1146f4
|
Recipient: user2@domain.com, Message: Test, Email Sent: 17677cdfbe1146f4
|
||||||
```
|
```
|
||||||
|
|
||||||
## Reply to an email
|
## Conversation mode
|
||||||
|
|
||||||
To reply to an email and have Gmail recognize it in conversation mode, you have to specify the
|
To reply to an email and have Gmail recognize it in conversation mode for the original sender, you have to specify the
|
||||||
`References` and `In-Reply-to` headers with the `RFC822 Message ID` from the original message
|
`References` and `In-Reply-to` headers with the `RFC822 Message ID` from the original message
|
||||||
and the `subject` from the original message.
|
and the `subject` from the original message.
|
||||||
```
|
```
|
||||||
gam user recipient@domain.com sendemail to sender@domain.com references "<CAAMabc...XYZQ@mail.gmail.com>" in-reply-to "<CAAMabc...XYZQ@mail.gmail.com>" subject "Re: Original subject" textmessage "Reply text"
|
gam user recipient@domain.com sendemail to sender@domain.com references "<CAAMabc...XYZQ@mail.gmail.com>" in-reply-to "<CAAMabc...XYZQ@mail.gmail.com>" subject "Re: Original subject" textmessage "Reply text"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you want to have Gmail recognize the reply in conversation mode in the Sent folder of the original recipient,
|
||||||
|
you must include `threadid <String>`; you can get the 'threadId` with:
|
||||||
|
```
|
||||||
|
gam user recipient@domain.com show messages query "rfc822MsgId:<CAAMabc...XYZQ@mail.gmail.com>"
|
||||||
|
Getting all Messages that match query ((rfc822MsgId:<CAAMabc...XYZQ@mail.gmail.com>)) for recipient@domain.com
|
||||||
|
Got 1 Message that matched query ((rfc822MsgId:<CAAMabc...XYZQ@mail.gmail.com>)) for recipient@domain.com...
|
||||||
|
User: recipient@domain.com, Show 1 Message
|
||||||
|
Message: 19cfd414fe48430d
|
||||||
|
...
|
||||||
|
|
||||||
|
gam user recipient@domain.com sendemail to sender@domain.com references "<CAAMabc...XYZQ@mail.gmail.com>" in-reply-to "<CAAMabc...XYZQ@mail.gmail.com>" subject "Re: Original subject" textmessage "Reply text" threadid 19cfd414fe48430d
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAM 7.36.01 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.36.02 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.3 64-bit final
|
Python 3.14.3 64-bit final
|
||||||
macOS Tahoe 26.3.1 arm64
|
macOS Tahoe 26.3.1 arm64
|
||||||
@@ -15,7 +15,7 @@ Time: 2026-02-15T07:51:00-08:00
|
|||||||
Print the current version of Gam with details and time offset information
|
Print the current version of Gam with details and time offset information
|
||||||
```
|
```
|
||||||
gam version timeoffset
|
gam version timeoffset
|
||||||
GAM 7.36.01 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.36.02 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.3 64-bit final
|
Python 3.14.3 64-bit final
|
||||||
macOS Tahoe 26.3.1 arm64
|
macOS Tahoe 26.3.1 arm64
|
||||||
@@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
|
|||||||
Print the current version of Gam with extended details and SSL information
|
Print the current version of Gam with extended details and SSL information
|
||||||
```
|
```
|
||||||
gam version extended
|
gam version extended
|
||||||
GAM 7.36.01 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.36.02 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.3 64-bit final
|
Python 3.14.3 64-bit final
|
||||||
macOS Tahoe 26.3.1 arm64
|
macOS Tahoe 26.3.1 arm64
|
||||||
@@ -68,7 +68,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/gamteam/bin/gam7
|
Path: /Users/gamteam/bin/gam7
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 7.36.01
|
Latest: 7.36.02
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -76,7 +76,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
7.36.01
|
7.36.02
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -86,7 +86,7 @@ echo $VER
|
|||||||
Print the current version of Gam and address of this Wiki
|
Print the current version of Gam and address of this Wiki
|
||||||
```
|
```
|
||||||
gam help
|
gam help
|
||||||
GAM 7.36.01 - https://github.com/GAM-team/GAM
|
GAM 7.36.02 - https://github.com/GAM-team/GAM
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.3 64-bit final
|
Python 3.14.3 64-bit final
|
||||||
macOS Tahoe 26.3.1 arm64
|
macOS Tahoe 26.3.1 arm64
|
||||||
|
|||||||
Reference in New Issue
Block a user