Skip to content

Commit 2ad27ab

Browse files
committed
Merge branch 'release/7.6.2'
2 parents b3e97ea + c35c40d commit 2ad27ab

File tree

7 files changed

+66
-12
lines changed

7 files changed

+66
-12
lines changed

ReleaseNotes.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Release Notes
22

3-
## Papercut SMTP v7.6.1 [2025-11-08]
3+
## Papercut SMTP v7.6.2 [2025-11-11]
4+
5+
*Release replaces 7.6.1 which had a major issue with email receiving in the UI.*
46

57
### New Features
68

ReleaseNotesCurrent.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Release Notes
22

3-
## Papercut SMTP v7.6.1 [2025-11-08]
3+
## Papercut SMTP v7.6.2 [2025-11-11]
4+
5+
*Release replaces 7.6.1 which had a major issue with email receiving in the UI.*
46

57
### New Features
68

installation/winget/ChangemakerStudios.PapercutSMTP.installer.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
PackageIdentifier: "ChangemakerStudios.PapercutSMTP"
2-
PackageVersion: "7.6.1"
2+
PackageVersion: "7.6.2"
33
Platform:
44
- "Windows.Desktop"
55
MinimumOSVersion: "10.0.17763.0"
@@ -13,13 +13,13 @@ InstallerSwitches:
1313
UpgradeBehavior: "install"
1414
Installers:
1515
- Architecture: "x64"
16-
InstallerUrl: "https://github.com/ChangemakerStudios/Papercut-SMTP/releases/download/7.6.1/PapercutSMTP-win-x64-stable-Setup.exe"
16+
InstallerUrl: "https://github.com/ChangemakerStudios/Papercut-SMTP/releases/download/7.6.2/PapercutSMTP-win-x64-stable-Setup.exe"
1717
InstallerSha256: "<SHA256_HASH_x64>"
1818
- Architecture: "x86"
19-
InstallerUrl: "https://github.com/ChangemakerStudios/Papercut-SMTP/releases/download/7.6.1/PapercutSMTP-win-x86-stable-Setup.exe"
19+
InstallerUrl: "https://github.com/ChangemakerStudios/Papercut-SMTP/releases/download/7.6.2/PapercutSMTP-win-x86-stable-Setup.exe"
2020
InstallerSha256: "<SHA256_HASH_x86>"
2121
- Architecture: "arm64"
22-
InstallerUrl: "https://github.com/ChangemakerStudios/Papercut-SMTP/releases/download/7.6.1/PapercutSMTP-win-arm64-stable-Setup.exe"
22+
InstallerUrl: "https://github.com/ChangemakerStudios/Papercut-SMTP/releases/download/7.6.2/PapercutSMTP-win-arm64-stable-Setup.exe"
2323
InstallerSha256: "<SHA256_HASH_arm64>"
2424
ManifestType: "installer"
2525
ManifestVersion: "1.6.0"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
PackageIdentifier: "ChangemakerStudios.PapercutSMTP"
2-
PackageVersion: "7.6.1"
2+
PackageVersion: "7.6.2"
33
DefaultLocale: "en-US"
44
ManifestType: "version"
55
ManifestVersion: "1.6.0"

src/Papercut.Infrastructure.Smtp/PapercutSmtpModule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ protected override void Load(ContainerBuilder builder)
5252
builder.Register(
5353
ctx =>
5454
{
55-
var ipAllowedList = ctx.Resolve<IPAllowedList>();
55+
var ipAllowedList = ctx.ResolveOptional<IPAllowedList>() ?? IPAllowedList.AllowAll;
5656
var logger = ctx.Resolve<ILogger>().ForContext<IpAllowlistMailboxFilter>();
5757
return new DelegatingMailboxFilterFactory(
5858
_ => new IpAllowlistMailboxFilter(ipAllowedList, logger));

src/Papercut.Service/Readme.md

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,52 @@ Edit `Papercut.Service.Settings.json` and set:
8080
}
8181
```
8282

83-
**Change HTTP Port:**
84-
Use the `Urls` setting in `appsettings.json` or environment variable:
83+
**Change HTTP Port and Binding Address:**
84+
85+
The web interface binding can be configured using the `Urls` setting in `appsettings.json` or `appsettings.Production.json`:
86+
87+
**Localhost only (default, most secure):**
8588
```json
8689
{
8790
"Urls": "http://localhost:8080"
8891
}
8992
```
9093

94+
**Bind to all network interfaces (accessible from any IP):**
95+
```json
96+
{
97+
"Urls": "http://0.0.0.0:8080"
98+
}
99+
```
100+
Alternatively, use wildcard syntax:
101+
```json
102+
{
103+
"Urls": "http://+:8080"
104+
}
105+
```
106+
or
107+
```json
108+
{
109+
"Urls": "http://*:8080"
110+
}
111+
```
112+
113+
**Bind to a specific IP address:**
114+
```json
115+
{
116+
"Urls": "http://192.168.1.100:8080"
117+
}
118+
```
119+
120+
**Multiple bindings (listen on multiple addresses):**
121+
```json
122+
{
123+
"Urls": "http://localhost:8080;http://192.168.1.100:8080"
124+
}
125+
```
126+
127+
**Security Note:** ⚠️ When binding to `0.0.0.0`, `+`, `*`, or a non-localhost IP address, the web interface becomes accessible from other machines on the network. Ensure proper firewall rules and network security are in place, as Papercut does not include built-in authentication.
128+
91129
**Change SMTP IP Address:**
92130
Edit `Papercut.Service.Settings.json`:
93131
```json

src/Papercut.UI/ViewModels/MessageDetailRawViewModel.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public class MessageDetailRawViewModel : Screen,
3535

3636
private bool _messageLoaded;
3737

38+
private MimeMessage? _loadedMimeMessage;
39+
3840
private IDisposable? _messageLoader;
3941

4042
private MimeMessage? _mimeMessage;
@@ -114,9 +116,11 @@ public Task HandleAsync(ThemeChangedEvent @event, CancellationToken token)
114116

115117
private void RefreshDump()
116118
{
117-
if (MessageLoaded)
119+
// Don't reload if this exact message instance is already loaded
120+
if (MessageLoaded && ReferenceEquals(_loadedMimeMessage, _mimeMessage))
118121
return;
119122

123+
// Cancel any in-progress load
120124
if (_messageLoader != null)
121125
{
122126
_messageLoader.Dispose();
@@ -127,20 +131,24 @@ private void RefreshDump()
127131
{
128132
IsLoading = false;
129133
MessageLoaded = false;
134+
_loadedMimeMessage = null;
130135
Raw = string.Empty;
131136
return;
132137
}
133138

134139
IsLoading = true;
140+
var messageToLoad = _mimeMessage;
135141

136142
_messageLoader =
137-
Observable.Start(() => _mimeMessage.GetStringDump())
143+
Observable.Start(() => messageToLoad.GetStringDump())
138144
.SubscribeOn(TaskPoolScheduler.Default)
139145
.ObserveOn(Dispatcher.CurrentDispatcher)
140146
.Subscribe(h =>
141147
{
142148
Raw = h;
149+
_loadedMimeMessage = messageToLoad;
143150
MessageLoaded = true;
151+
IsLoading = false;
144152
});
145153
}
146154

@@ -175,6 +183,10 @@ protected override void OnViewLoaded(object view)
175183
IsLoading = false;
176184
});
177185

186+
// Observe MimeMessage changes and refresh when it changes
187+
this.GetPropertyValues(p => p.MimeMessage)
188+
.Subscribe(_ => RefreshDump());
189+
178190
// Hook up zoom functionality
179191
typedView.rawEdit.PreviewMouseWheel += (sender, e) =>
180192
{

0 commit comments

Comments
 (0)