<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" 
	>
<channel>
	<title>
	Comments on: LH Email	</title>
	<atom:link href="https://lhero.org/portfolio/lh-email/feed/" rel="self" type="application/rss+xml" />
	<link>https://lhero.org/portfolio/lh-email/</link>
	<description>Digital Sovereignty for everyone</description>
	<lastBuildDate>Sun, 01 Nov 2026 11:10:27 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-email/#comment-1537841</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Sun, 01 Nov 2026 11:10:27 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?p=613#comment-1537841</guid>

					<description><![CDATA[Inbound mail can now be filed once it has been dealt with (lh-tasks #153109). Three new abilities change message state in an IMAP mailbox; the existing IMAP abilities stay read-only. archive-imap-message takes a handled message out of the inbox without deleting it: on Gmail it removes the Inbox label, as Gmail&#039;s own Archive and Done do, leaving the message in All Mail; on other hosts it moves it to the archive folder (archive_folder, else the server&#039;s special-use Archive folder, else &quot;Archive&quot;, filter lh_email_imap_archive_folder) with UID MOVE, or with UIDPLUS a copy then an expunge of that one UID; a server with neither is refused rather than risk expunging other deleted messages. set-imap-flags marks messages read or unread and starred or unstarred (seen, flagged). set-gmail-labels adds and removes Gmail labels with X-GM-LABELS, refusing a missing label unless create_missing is set, and never adding Trash or Spam. All three take uid or uids (up to 50) in a folder of a site&#039;s connection, report each message&#039;s flags and labels before and after, and are idempotent: a message already in the asked-for state is reported unchanged. On Gmail, state is read and changed in All Mail, found by X-GM-MSGID, and each result gives its All Mail folder and UID. Nothing is ever deleted. Requires edit_posts, like the other IMAP abilities.]]></description>
			<content:encoded><![CDATA[<p>Inbound mail can now be filed once it has been dealt with (lh-tasks #153109). Three new abilities change message state in an IMAP mailbox; the existing IMAP abilities stay read-only. archive-imap-message takes a handled message out of the inbox without deleting it: on Gmail it removes the Inbox label, as Gmail&#8217;s own Archive and Done do, leaving the message in All Mail; on other hosts it moves it to the archive folder (archive_folder, else the server&#8217;s special-use Archive folder, else &#8220;Archive&#8221;, filter lh_email_imap_archive_folder) with UID MOVE, or with UIDPLUS a copy then an expunge of that one UID; a server with neither is refused rather than risk expunging other deleted messages. set-imap-flags marks messages read or unread and starred or unstarred (seen, flagged). set-gmail-labels adds and removes Gmail labels with X-GM-LABELS, refusing a missing label unless create_missing is set, and never adding Trash or Spam. All three take uid or uids (up to 50) in a folder of a site&#8217;s connection, report each message&#8217;s flags and labels before and after, and are idempotent: a message already in the asked-for state is reported unchanged. On Gmail, state is read and changed in All Mail, found by X-GM-MSGID, and each result gives its All Mail folder and UID. Nothing is ever deleted. Requires edit_posts, like the other IMAP abilities.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-email/#comment-1537833</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Sun, 01 Nov 2026 06:30:55 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?p=613#comment-1537833</guid>

					<description><![CDATA[Compose emails can now carry attachments, from private media only (lh-tasks #153091). create-draft and update-draft take attachments, an array of attachment IDs (update-draft replaces the list; an empty array clears it). Each must be a private file held by LH Private Uploads on the same site that the caller can open, at most 10 files and 10 MB per email (filters lh_email_attachment_max_count and lh_email_attachment_max_total_bytes); make one from a sandbox file or an IMAP attachment with lh-private-uploads/create-private-media. get-compose lists a draft&#039;s attachments (file name, size, access-checked URL, purpose, and any problem), and the edit screen shows them in an Attachments box, so they can be reviewed before sending. At dispatch the files are checked again and read from disk; single emails attach them to the one message and broadcasts send the same stored file to every recipient. If a file is missing, the email is not sent: publishing is refused in the editor, a scheduled send goes back to draft, and a queued message whose file has gone is marked failed rather than sent without it. Files made only for an email (purpose email) are deleted 30 days after it is sent, or 30 days after they were made if never sent, but never while a draft still holds them or a message is still queued (filter lh_email_attachment_retention_days); this runs on each site&#039;s hourly wakeup. Requires LH Private Uploads 1.6.0 for attaching; without it, emails without attachments are unaffected.]]></description>
			<content:encoded><![CDATA[<p>Compose emails can now carry attachments, from private media only (lh-tasks #153091). create-draft and update-draft take attachments, an array of attachment IDs (update-draft replaces the list; an empty array clears it). Each must be a private file held by LH Private Uploads on the same site that the caller can open, at most 10 files and 10 MB per email (filters lh_email_attachment_max_count and lh_email_attachment_max_total_bytes); make one from a sandbox file or an IMAP attachment with lh-private-uploads/create-private-media. get-compose lists a draft&#8217;s attachments (file name, size, access-checked URL, purpose, and any problem), and the edit screen shows them in an Attachments box, so they can be reviewed before sending. At dispatch the files are checked again and read from disk; single emails attach them to the one message and broadcasts send the same stored file to every recipient. If a file is missing, the email is not sent: publishing is refused in the editor, a scheduled send goes back to draft, and a queued message whose file has gone is marked failed rather than sent without it. Files made only for an email (purpose email) are deleted 30 days after it is sent, or 30 days after they were made if never sent, but never while a draft still holds them or a message is still queued (filter lh_email_attachment_retention_days); this runs on each site&#8217;s hourly wakeup. Requires LH Private Uploads 1.6.0 for attaching; without it, emails without attachments are unaffected.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
